You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server多顺序触发器末尾报错回滚时前置操作是否会同步回滚

问题解答

结论

之前已经执行完成的所有触发器操作,以及触发本次触发器的原始INSERT操作,都会被同步回滚。

核心原因

  • SQL Server中所有DML触发器和触发它的DML语句,默认归属同一个事务上下文。不管你是通过sp_settriggerorder指定了INSERT触发器的执行顺序,还是触发器为顺序执行而非嵌套执行的模式,这个事务绑定规则都不会变。
  • 事务本身具备原子性:同一个事务内的所有操作要么全部生效,要么全部撤销。当最后一个触发器抛出错误、或者显式调用ROLLBACK TRANSACTION时,回滚操作针对的是整个事务的所有变更,不会只回滚最后一个触发器的逻辑。
  • 你可以自行做简单测试验证:新建测试表后配置两个顺序执行的INSERT触发器,第一个触发器负责向独立的日志表插入操作记录,第二个触发器设为最后执行,内部直接触发回滚。完成测试插入操作后查询日志表,不会找到第一个触发器插入的记录,即可验证回滚覆盖了之前所有触发器的操作。

内容的提问来源于stack exchange,提问作者Brian Adams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:54:02