多个操作语句的触发器为什么在执行时,只执行了第一句?

在执行包含多个操作语句的触发器时,发现只执行了第一句。问题出现在未定义变量导致后续语句未执行。通过修正触发器,使用变量并确保其正确赋值,解决了这个问题。细节决定成败,提醒我们在编程时要注重每个小细节,避免类似问题的发生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多个操作语句的触发器为什么在执行时,只执行了第一句?

这个问题困扰了我好久,记得第一次遇到这个问题是半个月前,做牛腩新闻发布系统的数据库遇到这个问题,是关于级联删除的:当我们删除新闻类别的时候,由于外键的原因,我们无法删除新闻类别下有新闻内容的记录,但是通过如下触发器,我们就可以实现:

create trigger trigcategorydelete

on category

instead of delete

as

begin

declare @id int  --定义一个变量id

select @id=id from deleted  --从deleted临时表中,赋值id给变量@id

delete news where caId=@id  --先删除该类别下的所有新闻

delete category where id=@id  --然后删除新闻类别 

end

当时学习这里的时候,重点在“级联删除”。看完视频后,根据对触发器的理解,自己写的触发器,如下:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值