INSERT AFTER或UPDATE AFTER触发器内的回滚是否回滚整个事务

Vam*_*msi 6 t-sql sql-server triggers sql-server-2008

INSERT AFTER或UPDATE AFTER触发器内的回滚是回滚整个事务还是仅作为触发原因的当前行,是否与Commit相同?

我试图通过我当前使用MSTDC进行交易的项目代码来检查它,看起来好像完整的交易中止了.

如果触发器中的回滚确实回滚整个事务,是否有一种解决方法可以将其限制为仅当前行.

我在这上面找到了sybase的链接,但在sql server上没有

RB.*_*RB. 8

是的,它将回滚整个交易.

这些都在文档中(参见备注).请注意我强调的评论 - 我会说这非常重要!

如果在触发器中发出ROLLBACK TRANSACTION:

对当前事务中对该点所做的所有数据修改都将被回滚,包括触发器所做的任何修改.

触发器继续执行 ROLLBACK语句之后的任何剩余语句.如果这些语句中的任何一个修改数据,则不会回滚修改.执行这些剩余的语句不会触发嵌套触发器.

触发触发器的语句后批处理中的语句不会执行.

  • 你为什么需要一个解决方法?触发器就像任何其他代码一样 - 您可以随时控制您想要回滚的确切位置. (4认同)