我在某些表上有一些触发器,这些表在删除或更新某些内容时执行某个功能。在事务期间,如果触发器执行并且稍后在事务中它被回滚,那么触发器是否也会被回滚?
答案 0 :(得分:18)
是
只要触发器作为事务的一部分触发,数据库中的make中的任何更改也将被回滚。
Nitpick - 触发器是一个触发器,它不会被回滚。触发器的效果将是。
答案 1 :(得分:4)
好的,在插入/更新/删除时回滚的真实事务也会回滚触发器所采取的任何操作。但是,如果您在事务中执行多个操作,则事务处理必须在您的代码中明确,以便在早期操作中进行回滚。
因此,如果我从table1中删除并且触发器触发,然后事务失败,则所有内容都会回滚。
如果我从表1中删除并且触发器触发并且我从table2中删除作为相同脚本或存储过程或应用程序发送的dynamicSQL的一部分,那么可能会发生两件事。如果你有一个正式的显式事务(正确处理错误),那么所有发生的事情,包括触发器动作都会被回滚,如果你依赖一个隐式事务(只回滚最后一个动作),那么它就不会改变任何东西。失败的部分。