2013-03-19 2 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

+0

Спасибо вам большое! : D – Ponnnnn

Смежные вопросы