Oracle SQL外键不起作用

时间:2013-04-18 07:50:40

标签: sql database oracle

表#1:

CREATE TABLE Department(
  Dept_ID char(02) Primary Key, 
  Dept_Name varchar(20) , 
  Manager_ID char(03), 
  Location_ID char(04)
)

表#2:

CREATE TABLE employee (
   Employee_ID char(03) Primary key, 
   First_Name varchar(10), 
   Dept_ID char(02) foreign key references Department(Dept_ID),
   Email varchar(10), 
   Tel_No char(10),
   Hire_Date Date
)

当我尝试在表#2中创建一个FOREIGN KEY时。我收到以下错误。

ORA-00907: missing right parenthesis

请善意告诉我我的代码中有什么错误,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

只需删除foreign key

CREATE TABLE employee (
   Employee_ID char(03) Primary key, 
   First_Name varchar(10), 
   Dept_ID char(02) references Department(Dept_ID),
   Email varchar(10), 
   Tel_No char(10),
   Hire_Date Date
)

因为外键默认引用主键,

CREATE TABLE employee (
   Employee_ID char(03) Primary key, 
   First_Name varchar(10), 
   Dept_ID char(02) references Department,
   Email varchar(10), 
   Tel_No char(10),
   Hire_Date Date
)

也足够了。

注意,外键列不是必需的 - 您没有在任何地方指定not null,因此它是可选外键

答案 1 :(得分:1)

外键通常作为Oracle中的约束添加:

CREATE TABLE employee (
   Employee_ID char(03) Primary key, 
   First_Name varchar(10), 
   Dept_ID char(02),
   Email varchar(10), 
   Tel_No char(10),
   Hire_Date Date,
   CONSTRAINT fk_department foreign key (Dept_ID) references Department(Dept_ID)
)