SQL Server 2008R2创建触发器的问题

图片说明
三张表的关系如上图所示,要求在student里面删除某个学生时同时删除他的选课记录
然后创建触发器如下:
图片说明
然后表里面的数据如下:只有一行记录,不存在多行的情况
图片说明
然后还是会报错
图片说明
不知道怎么回事

要先删除course才能删除sc
删除了sc才能删除student
不知道你是为了学习触发器而用触发器还是需要实现这个功能,因为实际上不需要触发器,配置下级联删除就可以了,还简单。

这个问题我遇到过,需要删除sc或者student中的fk约束才能运行触发器。

图片说明

触发器是先删除后触发的吧,所以报错的是删除报的错,不是数据库报的错。

把触发器中的after换成Instead of就可以了

创建触发器改成这样


create trigger student_delete1 on student
Instead of delete
as
delete from sc where sc.sno=(select sno from deleted)
delete student where sno=(select sno from deleted)
go

给个分吧,哈哈