問題提出:現在我有三張表,學生Student,課程Course,成績SC
1. 學生表Student,主鍵是學號Sno
2. 課程Course,主碼是課程號Cno
3. 成績SC,主碼是Sno和Cno,Sno外鍵約束是Student的Sno,Cno的外鍵約束是Cno
現在我需要對Student或者Course進行修改或刪除,希望在SC表中能保持修改或刪除同步,這就需要到級聯操作!
方法一、SQL Server 2008 中手動設置“級聯”
這個方法建議在建表時不要加入任何設置外鍵的代碼,如果主碼是兩者或以上的就不適合使用
1. 打開“數據庫關系圖”,若未創建,則創建
2. 選中SC表,右擊選中“關系”,展開“INSERT和UPDATE規范”中選擇級聯
3. Student表 和 Course 表也要同樣的設置
方法二、建表時使用級聯代碼添加
1 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'SC') 2 AND OBJECTPROPERTY(ID, 'IsUserTable') = 1) 3 DROP TABLE SC 4 Go 5 CREATE TABLE SC 6 ( Sno CHAR(10), 7 Cno CHAR(10), 8 Grade SMALLINT CHECK (Grade >= 0 AND Grade <= 100) NOT NULL, 9 10 PRIMARY KEY (Sno, Cno), 11 FOREIGN KEY (Sno) REFERENCES Student (Sno) 12 ON UPDATE CASCADE 13 ON DELETE CASCADE, 14 FOREIGN KEY (Cno) REFERENCES Course (Cno) 15 ON UPDATE CASCADE 16 ON DELETE CASCADE 17 );