级联删除

实现

级联删除(cascade delete)隶属于约束条件(constraint),因此,级联删除需要在约束条件中设置。

实验表

COURSE为课程表,STUDENT为学生表,ENROLLMENT为学生选课表。COURSE的课程号应该与ENROLLMENT的课程号对应。STUDENT的学生号应该与ENROLLMENT的学生号对应。所以ENROLLMENTCNOSNO为外键,分别与COURSE.CNOSTUDENT.SNO关联。

  • 数据
SELECT * FROM COURSE
C601        高等数学        周振兴         NULL
C602        大学英语        王志伟         NULL
C603        数据结构        刘建平         C601      
C604        操作系统        刘建平         C603      
SELECT * FROM STUDENT
1101        王燕          0   20  北京          工程系         NULL
1202        李波          1   21  上海          计算机系        NULL
1203        陈建          1   19  长沙          计算机系        NULL
1303        张斌          1   22  上海          经管系         NULL
1305        张斌          0   20  武汉          经管系         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'
  • 结果
SELECT * FROM STUDENT
1101        王燕          0   20  北京          工程系         NULL
1202        李波          1   21  上海          计算机系        NULL
1203        陈建          1   19  长沙          计算机系        NULL
1303        张斌          1   22  上海          经管系         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

总结

FOREIGN KEY中加入ON DELETE CASCADE可以实现级联删除,但是在执行 SQL 语句时,SQL Server 返回结果为仅有一行数据受到影响,而实际在本例中有三行数据(STUDENT中一行,ENROLLMENT中两行)受到影响,所以级联删除不会通知操作者其他表中是否有数据受到影响。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容