實現(xiàn)
級聯(lián)刪除(cascade delete)隸屬于約束條件(constraint),因此,級聯(lián)刪除需要在約束條件中設(shè)置。

實驗表
COURSE為課程表,STUDENT為學(xué)生表,ENROLLMENT為學(xué)生選課表。COURSE的課程號應(yīng)該與ENROLLMENT的課程號對應(yīng)。STUDENT的學(xué)生號應(yīng)該與ENROLLMENT的學(xué)生號對應(yīng)。所以ENROLLMENT的CNO與SNO為外鍵,分別與COURSE.CNO、STUDENT.SNO關(guān)聯(lián)。
- 數(shù)據(jù)
SELECT * FROM COURSE
C601 高等數(shù)學(xué) 周振興 NULL
C602 大學(xué)英語 王志偉 NULL
C603 數(shù)據(jù)結(jié)構(gòu) 劉建平 C601
C604 操作系統(tǒng) 劉建平 C603
SELECT * FROM STUDENT
1101 王燕 0 20 北京 工程系 NULL
1202 李波 1 21 上海 計算機系 NULL
1203 陳建 1 19 長沙 計算機系 NULL
1303 張斌 1 22 上海 經(jīng)管系 NULL
1305 張斌 0 20 武漢 經(jīng)管系 NULL
SELECT * FROM ENROLLMENT
1101 C601 90
1202 C601 72
1202 C602 85
1202 C603 87
1202 C604 NULL
1203 C603 78
1203 C604 80
1305 C601 68
1305 C602 70
- 代碼
ALTER TABLE COURSE
ADD PRIMARY KEY (CNO)
ALTER TABLE STUDENT
ADD PRIMARY KEY (SNO)
ALTER TABLE ENROLLMENT
ADD FOREIGN KEY (CNO) REFERENCES COURSE(CNO) ON DELETE CASCADE
ALTER TABLE ENROLLMENT
ADD FOREIGN KEY (SNO) REFERENCES STUDENT(SNO) ON DELETE CASCADE
實驗
- 刪除
DELETE FROM STUDENT WHERE SNO = '1305'
- 結(jié)果
SELECT * FROM STUDENT
1101 王燕 0 20 北京 工程系 NULL
1202 李波 1 21 上海 計算機系 NULL
1203 陳建 1 19 長沙 計算機系 NULL
1303 張斌 1 22 上海 經(jīng)管系 NULL
SELECT * FROM ENROLLMENT
1101 C601 90
1202 C601 72
1202 C602 85
1202 C603 87
1202 C604 NULL
1203 C603 78
1203 C604 80
總結(jié)
在FOREIGN KEY中加入ON DELETE CASCADE可以實現(xiàn)級聯(lián)刪除,但是在執(zhí)行 SQL 語句時,SQL Server 返回結(jié)果為僅有一行數(shù)據(jù)受到影響,而實際在本例中有三行數(shù)據(jù)(STUDENT中一行,ENROLLMENT中兩行)受到影響,所以級聯(lián)刪除不會通知操作者其他表中是否有數(shù)據(jù)受到影響。