0
在三張不同的表格中,我有單獨的INSERT
,UPDATE
和DELETE
觸發器。觸發器可能不會觸發嗎?
我知道他們如預期的那樣工作(嘗試添加,刪除,更新並確認要進入日誌表的更改)。但是,恰巧行被刪除或添加,沒有我的日誌表中有任何內容。
所以我的問題是:是否有可能在不啓用INSERT觸發器的情況下添加記錄?
這是SQL Server的2005
在三張不同的表格中,我有單獨的INSERT
,UPDATE
和DELETE
觸發器。觸發器可能不會觸發嗎?
我知道他們如預期的那樣工作(嘗試添加,刪除,更新並確認要進入日誌表的更改)。但是,恰巧行被刪除或添加,沒有我的日誌表中有任何內容。
所以我的問題是:是否有可能在不啓用INSERT觸發器的情況下添加記錄?
這是SQL Server的2005
這是可能的,如果查詢已執行禁止使用特定的觸發,例如通過使用
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)
向我們展示你的扳機,我們會弄清楚
有沒有可能是多個記錄插入/在一個已刪除單個語句?我認爲觸發器只會在SQL Server的這些情況下觸發一次 – Tobsey
這個問題的一個常見來源是,當你寫出觸發器只處理'inserted'或'deleted'中的單個行時(例如,從'ins中選擇@var = col erted'),然後多行語句僅從觸發器記錄* 1 *行。你能展示你的觸發器嗎? –
這當然是可能的,但總是有一個原因(設置未打開,記錄鎖定,代碼中的語法等)。你能提供你的代碼和一些上下文來幫助我們瞭解你的特定問題嗎? –