Oracle create table query中的语法错误

时间:2016-08-03 17:04:51

标签: sql oracle

CREATE TABLE Emp OF Emp_t(eno PRIMARY KEY, edept REFERENCES Dept); 

在PRIMARY KEY附近,它将显示语法错误,因为预期不为null。我需要解决它。

以下是该架构中的其余查询。

CREATE TYPE Emp_t AS OBJECT(eno number(4),ename varchar2(15),edept ref dept_t,salary number(8,2));
/

CREATE TYPE Dept_t AS OBJECT(dno number(2),dname varchar2(12),mgr ref emp_t);
/

CREATE TYPE Proj_t AS OBJECT(pno number(4),pname varchar2(15),pdept ref dept_t,budget number(10,2));
/

CREATE TABLE Dept OF Dept_t(dno PRIMARY KEY,  mgr REFERENCES Emp);

CREATE TABLE Proj OF Proj_t(pno PRIMARY KEY, pdept REFERENCES dept);

显示错误,如下图所示。 enter image description here

1 个答案:

答案 0 :(得分:0)

正如@LostInAlabama建议的那样,您可以创建表格并在之后添加循环约束:

ALTER TABLE Dept ADD (CONSTRAINT Dept_FK_Emp FOREIGN KEY (mgr) REFERENCES Emp);
ALTER TABLE Emp ADD (CONSTRAINT Emp_FK_Dept FOREIGN KEY (edept) REFERENCES Dept);
ALTER TABLE Proj ADD (CONSTRAINT Proj_FK_Dept FOREIGN KEY (pdept) REFERENCES Dept);

或最好使用命名约束:

+=