我已经编写了更新触发器,因此每次更新时触发器都会运行。 但只是为我的更新声明之一,我不希望发生触发器。 我该如何暂时禁用触发器?在某些情况下禁用更新触发器
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