当作为TSQL批处理的一部分发出“DISABLE TRIGGER”时,它是否限定为批处理的上下文,或者对于任何其他并发查询也可能禁用触发器?
如果是后者,需要什么样的锁定才能确保仅为发出查询禁用触发器?
答案 0 :(得分:5)
全局禁用。只能为单个连接禁用它。
您可以使用的一种技巧是将以下内容添加到触发器
if context_info() = cast('disabled' as varbinary(128))
return
然后在连接中你要“禁用”使用的触发器
declare @triggerdisabled varbinary(128) = cast('disabled' as varbinary(128))
set context_info @triggerdisabled
要“重新启用”,请使用
set context_info 0x