条件SQL Server触发器

时间:2016-05-11 16:09:58

标签: sql sql-server

我刚刚在桌面上发现了一个现有触发器,导致无法将“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专家都可以提供帮助吗?

1 个答案:

答案 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]