使用SQL / ORACLE的外键

我试图使用SQL声明一个FOREIGN KEY,但是我总是收到该错误:

FOREIGN KEY (Dno) REFERENCES DEPARTMENT (Dnumber))

第14行出现错误:ORA-00942:表或视图不存在

FOREIGN KEY (Mgr_ssn) REFERENCES EMPLOYEE(Ssn))
                              *

第8行出现错误:ORA-00942:表或视图不存在

这是我正在使用的代码:

CREATE TABLE employee (fname VARCHAR (15) NOT NULL,
                       minit CHAR,
                       lname VARCHAR (15) NOT NULL,
                       ssn CHAR (9) NOT NULL,
                       bdate DATE,
                       address VARCHAR (30),
                       sex CHAR,
                       salary DECIMAL (10, 2),
                       super_ssn CHAR (9),
                       dno INT NOT NULL,
                       PRIMARY KEY (ssn),
                       FOREIGN KEY (super_ssn) REFERENCES employee (ssn),
                       FOREIGN KEY (dno) REFERENCES department (dnumber));

CREATE TABLE department (dname VARCHAR (15) NOT NULL,
                         dnumber INT NOT NULL,
                         mgr_ssn CHAR (9) NOT NULL,
                         mgr_start_date DATE,
                         PRIMARY KEY (dnumber),
                         UNIQUE (dname),
                         FOREIGN KEY (mgr_ssn) REFERENCES employee (ssn));
骨干主义者

由于您的雇员表创建语句具有对部门表的引用,因此您需要确保首先创建部门表。但是,作为创建部门表脚本的一部分,您有对雇员表的引用。循环引用啊!

幸运的是,您可以与创建表脚本分开创建约束,在这种情况下,这是您必须要做的,例如:

CREATE TABLE employee (fname VARCHAR (15) NOT NULL,
                       minit CHAR,
                       lname VARCHAR (15) NOT NULL,
                       ssn CHAR (9) NOT NULL,
                       bdate DATE,
                       address VARCHAR (30),
                       sex CHAR,
                       salary DECIMAL (10, 2),
                       super_ssn CHAR (9),
                       dno INT NOT NULL,
                       PRIMARY KEY (ssn),
                       FOREIGN KEY (super_ssn) REFERENCES employee (ssn));

CREATE TABLE department (dname VARCHAR (15) NOT NULL,
                         dnumber INT NOT NULL,
                         mgr_ssn CHAR (9) NOT NULL,
                         mgr_start_date DATE,
                         PRIMARY KEY (dnumber),
                         UNIQUE (dname),
                         FOREIGN KEY (mgr_ssn) REFERENCES employee (ssn));

alter table employee add constraint emp_dept_fk FOREIGN KEY (dno) REFERENCES department (dnumber);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章