Sql-Server
結合交易觸發
假設我們有以下情況:
我們有一張桌子(比方說
Table_A
),上面有一個觸發器INSERT
。觸發器作業是table_B
根據插入的值更新table_A
.現在,當我們簡單地在表中插入一行時一切都好,但是我們通過事務插入數據的情況呢?觸發器會等到所有事務語句成功執行,還是在辨識插入時觸發?如果觸發器在辨識到第一個插入時立即觸發,如果最後一行的事務失敗會發生什麼?這種情況有什麼機制嗎?
插入始終在事務中。
如果您沒有明確的
BEGIN TRAN ... COMMIT
或SET IMPLICIT_TRANSACTIONS ON
然後該語句作為自包含的自動送出事務執行。觸發器始終是觸發觸發器的操作的事務的一部分。如果觸發器中發生導致事務回滾的錯誤,則觸發操作也將回滾。
觸發器隱含地具有
XACT_ABORT
。啟用此設置的錯誤將自動導致事務回滾(RAISERROR
語句程式碼中引發的錯誤除外)。