问题提出:现在我有三张表,学生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 表也要同样的设置

Sql Server级联操作-风君雪科技博客

方法二、建表时使用级联代码添加

 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 );