如何在更新语句之前禁用触发器并在SQL Server中的update语句之后再次启用它?
Update Table_name set column = 'col' where something
如何在SQL Server中编写此T-SQL代码?
答案 0 :(得分:2)
ALTER TABLE table_name DISABLE TRIGGER tr_name
...更新
ALTER TABLE table_name ENABLE TRIGGER tr_name
答案 1 :(得分:0)
而不是禁用该触发器,我会使用SET CONTEXT_INFO
(ref)和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
,则它将在不执行原始源代码的情况下退出。