如何在更新语句之前禁用触发器并在SQL Server中的更新语句之后再次启用它?

时间:2017-04-24 21:17:04

标签: sql sql-server

如何在更新语句之前禁用触发器并在SQL Server中的update语句之后再次启用它?

  • 禁用触发器
  • Update Table_name set column = 'col' where something
  • 启用触发器。

如何在SQL Server中编写此T-SQL代码?

2 个答案:

答案 0 :(得分:2)

ALTER TABLE table_name DISABLE TRIGGER tr_name

...更新

ALTER TABLE table_name ENABLE TRIGGER tr_name

答案 1 :(得分:0)

而不是禁用该触发器,我会使用SET CONTEXT_INFOref)和CONTEXT_INFO()ref),因此:

[1]我会改变触发器

ALTER TRIGGER ...
AFTER UPDATE
ON dbo.MyTable
AS
BEGIN
    IF CONTEXT_INFO() = 0x1256698456
    BEGIN
        RETURN
    END

    ... original source code ...
END

还有[2]我会用

SET CONTEXT_INFO 0x1256698456
UPDATE dbo.MyTable SET Col1 = 'Val1' WHERE ID = @param
SET CONTEXT_INFO 0x

在任何更新语句之前不应激活触发器。在这种情况下,触发器将被激活,但如果上下文信息为0x1256698456,则它将在不执行原始源代码的情况下退出。