我有这段代码:
Create TYPE Umpire As OBJECT(UmpireID INTEGER PRIMARY KEY,
UmpireName VARCHAR2(50),UmpireAddress VARCHAR2(50), UmpireContact VARCHAR2(50),
MEMBER FUNCTION get_results RETURN VARCHAR2,
MEMBER PROCEDURE set_results
(UmpireID INTEGER,UmpireName VARCHAR2(50),UmpireAddress VARCHAR2(50),UmpireContact VARCHAR2(50));
Create table Certificate(UmpireId INTEGER,CertificateUpdated CHAR, FOREIGN KEY (UmpireId) REFERENCES Umpire(UmpireId));
我有这样的错误:“架构创建失败:ORA-00942:表或视图不存在”
如何在Oracle中使用带有自定义类型的REFERENCES语句?
答案 0 :(得分:0)
出于参考目的,您需要使用以下语法。
CREATE TABLE parent (
id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (
id INT,
parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id)
REFERENCES parent(id)
ON DELETE CASCADE
) ENGINE=INNODB;
此外,如果尝试访问另一个模式中的表或视图,请确保引用了正确的模式,并授予对该对象的访问权。
您是否尝试同时运行同一数据库用户的select和insert?你能告诉我们从Connect到断开的SQLPLUS中的会话吗?你能说明函数的定义吗?
如果您在Schema A中创建了一个表,而在Schema B中创建了该函数,那么您应该查看Oracle的Invoker / Definer Rights概念,以了解可能导致该问题的原因。
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/subprograms.htm#LNPLS00809
我希望这会有所帮助。