如果SQL Server中的事务失败,是否会回滚触发器?

Mik*_*ynn 14 sql-server triggers transactions

我在某些表上有一些触发器,在删除或更新某些内容时执行某个功能.在事务期间,如果触发器执行并且稍后在事务中它被回滚,那么触发器是否也会被回滚?

Ode*_*ded 18

是.

只要触发器作为事务的一部分触发,数据库中的make的任何更改也将被回滚.

Nitpick - 触发器是一个触发器,它不会被回滚.触发器的效果将是.


HLG*_*GEM 5

好的,在插入/更新/删除时回滚的实际事务也将回滚触发器执行的任何操作。但是,如果您要在一个事务中执行多个动作,则必须在代码中显式地进行事务处理,以使回滚发生在早期动作上。

因此,如果我从table1中删除并触发触发器,然后事务失败,则一切都会回滚。

如果我从表1中删除并触发触发器,并且从同一应用程序发送的同一脚本或存储的proc或dynamicSQL中,从表2中删除,则可能会发生两种情况。如果您有一个正式的显式事务(可以正确处理错误),则发生的所有事件(包括触发操作)都将回滚;如果您依赖于隐式事务(仅回滚最后一个操作),则它在更改之前不会发生任何变化。失败的部分。