2013-03-19 188 views
1

下表已经成功实施:创建关联实体表

CREATE TABLE Patient (
Patient_ID CHAR(5)  CONSTRAINT Patient_PK PRIMARY KEY, 
First_Name VARCHAR2(20) NOT NULL, 
Last_Name VARCHAR2(20) NOT NULL, 
DoB  DATE, 
Sex  CHAR(1), 
Phone  NUMBER(10), 
Address VARCHAR2(40) 
); 

CREATE TABLE Physician (
Physician_ID CHAR(5)  CONSTRAINT Physician_PK PRIMARY KEY, 
First_Name VARCHAR2(20) NOT NULL, 
Last_Name VARCHAR2(20) NOT NULL, 
Department_ID CHAR(5) , 
    CONSTRAINT physician_FK_dept 
    FOREIGN KEY (Department_ID) 
    REFERENCES Department (Department_ID) 
    ON DELETE SET NULL 
); 

但是,当我尝试创建两个表之间的关联实体:

CREATE TABLE Visit (
Visit_ID CHAR(5)  CONSTRAINT Visit_PK PRIMARY KEY, 
Visit_date DATE  NOT NULL, 
Patient_ID VARCHAR2(20) NOT NULL, 
Physician_ID VARCHAR2(20), 
    CONSTRAINT visit_FK_patient 
    FOREIGN KEY (Patient_ID) 
    REFERENCES Patient (Patient_ID) 
    ON DELETE SET CASCADE, 
    CONSTRAINT visit_FK_physician 
    FOREIGN KEY (Physician_ID) 
    REFERENCES Physician (Physician_ID) 
    ON DELETE SET NULL 
); 

它失败,因为一个错误的:

ORA-00908: missing NULL keyword"

通常这是一个简单的缺少NULL的问题。但是这一次,不管我怎么看SQL,它看起来都不是那个错误。任何人都可以帮助看看他们是否能从另一个角度找到问题所在?谢谢

回答

3

我认为,你必须

ON DELETE SET CASCADE 

这应该是

ON DELETE CASCADE 

C.F. this

+0

+1我正准备回答同样的问题:) – Andomar 2013-03-19 18:48:32

+0

非常感谢! :d – Ponnnnn 2013-03-30 05:21:15