我已經編寫了更新觸發器,因此每次更新時觸發器都會運行。 但只是爲我的更新聲明之一,我不希望發生觸發器。 我該如何暫時禁用觸發器?在某些情況下禁用更新觸發器
1
A
回答
0
使用禁用觸發語句,然後做你的更新如下
DISABLE TRIGGER Person.uAddress ON Person.Address;
update ....
ENABLE Trigger Person.uAddress ON Person.Address;
0
您應該更改表和觸發器。可能的解決方案之一是將列添加到表中,例如Triggered。當你進行「正常」更新時,你應該插入1.如果你需要避免更新,那麼觸發= 0。觸發代碼應該是:
IF EXISTS(SELECT * FROM INSERTED WHERE triggered=1)
--here you trigger fired
4
MSDN對如何use CONTEXT_INFO to disable a trigger只對單個會話的一個示例。
0
到Dalex的答案類似:
另一種解決方案是增加一列,像Triggered
。在你的觸發器中使用這樣的東西。
IF NOT UPDATE(Triggered)
BEGIN
RETURN;
END
UPDATE()
僅僅檢查,看是否將該柱包括在觸發的,而不是無論是否該值被實際改變。如果您想要觸發觸發器的每個查詢都有Triggered = 1
,則會觸發。沒有這個的查詢不會觸發觸發器。
您可以使用nvarchar列並使用原因字段作爲標誌和解釋。
UPDATE Users
SET Password = ..encrypted_password..,
Reason = 'changed password'
WHERE UserID = ...
,然後如果你更新在登錄時lastLogin場
IF NOT UPDATE(Reason)
BEGIN
RETURN;
END
何在,你可能會排除的原因,土族觸發器將不會觸發。
UPDATE Users
SET LastLogin = getDate()
WHERE UserID = ...
相關問題
- 1. 如何在某些情況下禁用jQueryMobile頁面更改?
- 2. 如何在某些情況下禁用轉換器
- 3. 在某些情況下
- 4. 在某些情況下
- 5. System.Security.Cryptography.ProtectedData.Unprotect在某些情況下
- 6. .on()方法在某些情況下不會觸發
- 7. KO:點擊事件在某些情況下不會觸發
- 8. 在某些情況下禁用重用單元格
- 9. 如何在某些情況下禁用/啓用ActionBar.TabListener
- 10. 禁用用戶在某些情況下離開頁面(javascript)
- 11. solr「 - 」在某些情況下不起作用並且適用於某些情況
- 12. 基於某些情況禁用div
- 13. SQL只評估某些情況某些情況下db2和sybase
- 14. 使用@XmlTransient只在某些情況下
- 15. Rails - 在某些情況下使用CSS
- 16. 在某些情況下禁用星級評定
- 17. 如何在某些情況下完全禁用FullPage.js?
- 18. 如何在某些情況下禁用頁面加載屬性
- 19. 如何在某些情況下禁用Django的csrf保護?
- 20. 使用內聯css - 在某些情況下禁止或好嗎?
- 21. 在某些情況下禁用滾動視圖右側
- 22. Odoo:計算字段,在某些情況下不更新?
- 23. jQuery css樣式在某些情況下不更新
- 24. update_attributes在某些情況下不會更新nested_attributes
- 25. 在某些情況下禁用MFC中的CFileDialog中的更改文件夾
- 26. 禁用某些情況下的輸入字段
- 27. SQL Server 2008更新觸發器 - 更新某些列方法
- 28. Oracle:在不更改數據的情況下運行更新觸發器
- 29. 優化iOS應用某些情況下
- 30. Android在某些情況下崩潰
在我的理解中,'disable trigger'會影響其他更新,如果它們同時運行。你必須用桌子鎖來包裝 – Andomar 2011-05-09 06:15:46