2013-11-26 48 views
0

我在數據庫表Foo上有一個AFTER UPDATE觸發器。 它在Foo發生UPDATE時將審計記錄插入到審計表中。爲什麼AFTER UPDATE只觸發一次觸發器,即使有困難也有3個UPDATE在行上?

有3個獨立的服務運行,有時他們更新相同的Foo記錄 - 但不同的領域。

問題是當SAME行上有3個UPDATES時 - 這似乎幾乎在同一時間發生 - 我可以看到只有一個AFTER UPDATE觸發器被觸發。我看到只有一個審計記錄wheres我期望3.

任何意見,爲什麼會發生這種情況?

+0

所有三個更新都成功了嗎? – Twinkles

+0

創建一個sql小提琴演示你的問題 – Moho

+0

你能告訴我們你是如何解決這個問題的?謝謝 – siva

回答

0

我能想到的原因如下:

  1. 一個After僅在觸發SQL語句中指定的所有操作都已成功執行UPDATE觸發器被觸發。所有引用級聯操作和約束檢查也必須在觸發器觸發前成功。 [Quote]這可能是其他更新失敗,你沒有注意到。
  2. 如果UPDATE是長時間運行事務的一部分,其他更新可能正在等待第一個更新提交。
  3. 你的觸發器有一個錯誤。

無論如何,你有沒有看過SQL Server提供的審計功能?

相關問題