2013-12-19 148 views
0

我有這樣的SQL的Oracle SQL - ORA-009007缺少右括號

CREATE TABLE PATIENTS 
(
patientID NUMBER NOT NULL, 
healthInsID NUMBER, 
fname  VARCHAR(20) NOT NULL, 
minit  VARCHAR(15), 
lname  VARCHAR(30) NOT NULL, 
gender  CHAR(2), 
email  VARCHAR(40), 
street  VARCHAR(40), 
postalCode NUMBER, 
city  VARCHAR(20), 
country  VARCHAR(20), 

PRIMARY KEY (patientID), 
FOREIGN KEY (healthInsID) REFERENCES HEALTH_INSURANCES 
ON DELETE SET NULL ON UPDATE CASCADE 
); 

我不知道爲什麼我不斷收到此錯誤。我有很多搜索,但仍然沒有什麼能解決它。有任何想法嗎?

感謝

+1

在Oracle中,則不應使用'varchar'。改用'varchar2'。 http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1822 –

回答

1

你必須從HEALTH_INSURANCES表中FOREIGN KEY caluse指定列。 您還應該刪除ON UPDATE CASCADE。您可以使用trigger on update而不是此子句。

CREATE TABLE PATIENTS 
(
patientID NUMBER NOT NULL, 
healthInsID NUMBER, 
fname  VARCHAR(20) NOT NULL, 
minit  VARCHAR(15), 
lname  VARCHAR(30) NOT NULL, 
gender  CHAR(2), 
email  VARCHAR(40), 
street  VARCHAR(40), 
postalCode NUMBER, 
city  VARCHAR(20), 
country  VARCHAR(20), 

PRIMARY KEY (patientID), 
FOREIGN KEY (healthInsID) REFERENCES HEALTH_INSURANCES (healthInsID) 
ON DELETE SET NULL 
); 

More information about constraints

+0

我已經試過了,它給了我同樣的錯誤 –

+0

@ user3118957我加了'你應該也刪除ON更新CASCADE'到我asnwer – Parado

+0

謝謝,這工作,但如果我想要更新命令呢? –