Sql-Server

結合交易觸發

  • December 3, 2016

假設我們有以下情況:

我們有一張桌子(比方說Table_A),上面有一個觸發器INSERT。觸發器作業是table_B根據插入的值更新table_A.

現在,當我們簡單地在表中插入一行時一切都好,但是我們通過事務插入數據的情況呢?觸發器會等到所有事務語句成功執行,還是在辨識插入時觸發?如果觸發器在辨識到第一個插入時立即觸發,如果最後一行的事務失敗會發生什麼?這種情況有什麼機制嗎?

插入始終在事務中。

如果您沒有明確的BEGIN TRAN ... COMMITSET IMPLICIT_TRANSACTIONS ON然後該語句作為自包含的自動送出事務執行。

觸發器始終是觸發觸發器的操作的事務的一部分。如果觸發器中發生導致事務回滾的錯誤,則觸發操作也將回滾。

觸發器隱含地具有XACT_ABORT。啟用此設置的錯誤將自動導致事務回滾(RAISERROR語句程式碼中引發的錯誤除外)。

引用自:https://dba.stackexchange.com/questions/35025