2008-11-10 87 views
3

我有一個審計觸發器,它會自動將事件更新的時間以及在我所有表中的字段中更新的用戶。我有另一套觸發器,它將更新事件信息寫入事件表。問題是當某人更新某些東西時,由於第一個觸發器事件信息被觸發兩次。如何禁止重複條目?SQL Server觸發器相互觸發問題

回答

1

調查TRIGGER_NESTLEVEL函數。它返回觸發器嵌套的當前級別。您可以檢查以防止重複。

1

我想你有兩個選擇:

  1. 無論是兩套觸發合二爲一。

  2. 或者,每個數據庫設置都允許禁用觸發器的遞歸觸發。

1

如果您有足夠的權限(一些虛擬主機不允許您這樣做),您也可以關閉嵌套觸發器。有一個名爲sp_configure的存儲過程(Sql 2005),可以讓您修改服務器的配置。下面的語句禁用嵌套觸發器,這將停止觸發器觸發另一個觸發器。

版EXEC sp_configure嵌套觸發器「,0

0

禁用觸發大火觸發的行爲也可以在SS2005通過進入SS MGT Studio和選擇的問題,用鼠標右鍵單擊服務器的圖標,然後完成選擇「屬性」。然後從左側列表中選擇「高級」,並將「允許觸發器觸發其他」的值設置爲「假」。