【问题标题】:Foreign KEY Using SQL/ORACLE使用 SQL/ORACLE 的外键
【发布时间】:2015-03-27 22:52:29
【问题描述】:

我正在尝试使用 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));

【问题讨论】:

    标签: database oracle


    【解决方案1】:

    由于您的员工表创建语句引用了部门表,因此您需要确保首先创建部门表。但是,您在创建部门表脚本中引用了员工表。循环引用啊!

    幸运的是,您可以在创建表脚本之外单独创建约束,这就是在这种情况下您必须执行的操作,例如:

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多