我刚刚在桌面上发现了一个现有触发器,导致无法将“haschanged”的值更改为“0”的问题......
create trigger [dbo].[haschangedTD_WFM_Client]
on [dbo].[TD_WFM_Client]
for update
as
update TD_WFM_Client
set haschanged = 1
from TD_WFM_Client
inner join inserted on TD_WFM_Client.ID = inserted.ID
您可能会注意到,如果我执行以下SQL,则“haschanged”的值更改为“0”,触发器会跳入并将其更改为“1”
UPDATE dbo.TD_WFM_Client
SET HasChanged = 0
WHERE (Id = 560552)
所以,我正在尝试编写一个触发器,允许我在没有触发器触发的情况下更新SQL。
我只是无法弄清楚会做的逻辑和语法?
我想知道实际上它是否有可能呢?
任何SQL专家都可以提供帮助吗?
答案 0 :(得分:2)
您不需要创建新的触发器,只需在更新语句中禁用触发器:
DISABLE TRIGGER [dbo].[haschangedTD_WFM_Client] on [dbo].[TD_WFM_Client]
UPDATE dbo.TD_WFM_Client
SET HasChanged = 0
WHERE (Id = 560552)
ENABLE TRIGGER [dbo].[haschangedTD_WFM_Client] on [dbo].[TD_WFM_Client]