结合交易触发


25

假设我们有以下情况:

我们有一张桌子(假设Table_A),其中有一个触发器INSERT。触发工作是table_B根据中的插入值更新其中的某些行table_A

现在,当我们在表中简单地插入一行时,一切正常,但是在通过事务插入数据的情况下呢?触发器将等待所有事务语句成功运行,还是在识别到插入后立即触发?如果触发器在识别出第一个插入后立即触发,那么如果事务在最后一行失败,会发生什么?有什么机制可以解决这种情况吗?

Answers:


37

插入始终在事务内。

如果您没有显式的BEGIN TRAN ... COMMITSET IMPLICIT_TRANSACTIONS ON则该语句将作为自包含的自动提交事务运行

触发器始终是触发触发器的操作的事务的一部分。如果触发器中发生错误导致事务回滚,则触发操作也将回滚。

触发器隐式XACT_ABORT打开。启用此设置的错误将自动导致事务回滚(带有RAISERROR语句的代码中引发的错误除外)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.