在create table命令中定义外键时出现SQL命令行错误

时间:2018-04-02 19:53:40

标签: sql oracle command-line

我一直致力于一个学生信息系统项目,我遇到了一个问题,我需要为一个部门表定义一个外键,该表将链接到学生表。声明如下: -

Create Table Department
(
    deptID int NOT NULL PRIMARY KEY,
    deptINTRO VARCHAR(50) NULL,
    deptPhone VARCHAR(20) NULL,
    deptADDRESS VARCHAR(30) NULL,
    deptManager VARCHAR(20) NULL,

    stuID int FOREIGN KEY REFERENCES Student(stuID)
);
  

第7行的错误:
  ORA-00907:缺少右括号

我是SQL BTW的新手。

2 个答案:

答案 0 :(得分:0)

假设您有一个如下所示的学生表,您可以使用以下语句创建:

Create Table Student(stuID int PRIMARY KEY);

Create Table Department(
  deptID int NOT NULL PRIMARY KEY,
  deptINTRO VARCHAR(50) NULL,
  deptPhone VARCHAR(20) NULL,
  deptADDRESS VARCHAR(30) NULL,
  deptManager VARCHAR(20) NULL,
  stuID int, 
  CONSTRAINT fk_stID FOREIGN KEY(stuID) REFERENCES Student(stuID)
);
/

答案 1 :(得分:0)

在Oracle CREATE TABLE语句中创建参照完整性约束有两种不同的方法:内联和外联。

在线:

Create Table TableName(
  ID number not null CONSTRAINT TableName_PK PRIMARY KEY,
  FK number not null CONSTRAINT TableName_FK1 REFERENCES ForeignTable(ID)
);

外的线:

Create Table TableName(
  ID number not null,
  FK number not null,
  CONSTRAINT TableName_PK PRIMARY KEY (ID),
  CONSTRAINT TableName_FK1 FOREIGN KEY (FK) REFERENCES ForeignTable(ID)
);

在两种情况下,命名约束(CONSTRAINT Constraint_Name)都是可选的。在您的代码中,您通过在必要的内联约束声明中包含不必要的FOREIGN KEY语句来混合使用两种类型的声明。