我有一些触发器用于在某些表上执行函数,当某些东西被删除或更新时。在事务期间,如果触发器执行并且稍后在事务中被回滚,那么触发器也会被回滚吗?
我有一些触发器用于在某些表上执行函数,当某些东西被删除或更新时。在事务期间,如果触发器执行并且稍后在事务中被回滚,那么触发器也会被回滚吗?
可以。
只要触发器是作为交易的一部分触发的,数据库中所做的任何更改也将被回滚。
请注意 - 触发器只是一个触发器,不会被回滚。触发器的影响将被回滚。
好的,如果在插入/更新/删除时真实的事务被回滚,那么触发器执行的任何操作都将被回滚。然而,如果你在一个事务中执行多个操作,则必须在代码中显式处理事务才能回滚到之前的操作。
所以,如果我从table1中删除并触发了触发器,然后事务失败,所有的操作都将被回滚。
如果我从table1中删除并触发了触发器,并且同时从应用程序发送的脚本、存储过程或动态SQL中删除了table2中的数据,则可能会发生两种情况。如果你有一个正式的显式事务(正确处理错误),则包括触发器操作在内的所有操作都会被回滚;如果你依赖于隐式事务(只回滚最后一个操作),那么它不会改变失败之前的任何部分。