2014-02-27 249 views
-1

我找不出第二個sql create語句中的約束有什麼問題。SQL約束:外鍵

CREATE TABLE `sd344`.`COURSES` 
(
`Cno` CHAR(11) NOT NULL, 
`Ctitle` VARCHAR(11) NOT NULL, 
`Hours` TIME NOT NULL, 
`DeptId` INT NOT NULL DEFAULT '13', 
CONSTRAINT COURSPK 
PRIMARY KEY (Cno) 
); 

CREATE TABLE `DEPARTMENTS` 
(
`DeptId` INT NOT NULL, 
`DeptName` VARCHAR(11) NOT NULL, 
`College` VARCHAR(11) NOT NULL, 
PRIMARY KEY(DeptId), 
UNIQUE(DeptName), 
CONSTRAINT DEPTFK 
FOREIGN KEY(DeptId) REFERENCES COURSES 
ON DELETE SET DEFAULT ON UPDATE CASCADE 
); 

這個問題似乎來自

CONSTRAINT DEPTFK 
FOREIGN KEY(DeptId) REFERENCES COURSES 
ON DELETE SET DEFAULT ON UPDATE CASCADE 

任何人都可以請幫我指點迷津? 謝謝

+3

哪些DBMS和錯誤或錯誤的行爲? –

+0

@LuciaPasarin爲什麼DBMS重要? [ANSI外鍵語法](http://en.wikipedia.org/wiki/Foreign_key#Defining_foreign_keys)非常清晰。另外,我猜這是MySQL,因爲反引號 – Phil

+0

DBMS可能不僅僅因爲語法而且還因爲預期的行爲。 –

回答

0

看起來你只是試圖將外鍵鍵應用到錯誤的表。這應該是對COURSES

FOREIGN KEY (DeptId) REFERENCES DEPARTMENTS 

FOREIGN KEY (DeptId) REFERENCES DEPARTMENTS (DeptId) 
+0

它的工作原理。非常感謝!! – user3112318

+0

但是,如何向它添加「ON DELETE SET DEFAULT ON UPDATE CASCADE」部分?謝謝 – user3112318

+0

@ user3112318和以前一樣。你只是在錯誤的表格上做了聲明 – Phil