2012-11-02 218 views
0

在三張不同的表格中,我有單獨的INSERT,UPDATEDELETE觸發器。觸發器可能不會觸發嗎?

我知道他們如預期的那樣工作(嘗試添加,刪除,更新並確認要進入日誌表的更改)。但是,恰巧行被刪除或添加,沒有我的日誌表中有任何內容。

所以我的問題是:是否有可能在不啓用INSERT觸發器的情況下添加記錄?

這是SQL Server的2005

+0

有沒有可能是多個記錄插入/在一個已刪除單個語句?我認爲觸發器只會在SQL Server的這些情況下觸發一次 – Tobsey

+2

這個問題的一個常見來源是,當你寫出觸發器只處理'inserted'或'deleted'中的單個行時(例如,從'ins中選擇@var = col erted'),然後多行語句僅從觸發器記錄* 1 *行。你能展示你的觸發器嗎? –

+0

這當然是可能的,但總是有一個原因(設置未打開,記錄鎖定,代碼中的語法等)。你能提供你的代碼和一些上下文來幫助我們瞭解你的特定問題嗎? –

回答

0

這是可能的,如果查詢已執行禁止使用特定的觸發,例如通過使用

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } 
ON { object_name | DATABASE | ALL SERVER } [ ; ] 

此外,正如Damien指出的,在某些情況下,您的觸發器可能只適用於單個記錄。 錯誤(simplyfied例如:

UPDATE table SET field = value WHERE PK = (SELECT PK FROM inserted) 

更好:

UPDATE table SET field = value WHERE PK IN (SELECT PK FROM inserted) 

向我們展示你的扳機,我們會弄清楚