在作为TSQL批处理的一部分发出"DISABLE TRIGGER"时,它是否限定为批处理的上下文,或者对于任何其他并发查询也可能禁用触发器?
如果是后者,需要什么样的锁定才能确保仅针对发出的查询禁用触发器?
它在全球范围内被禁用 不能仅为单个连接禁用它.
您可以使用的一种技术是将以下内容添加到触发器中
if context_info() = cast('disabled' as varbinary(128))
return
Run Code Online (Sandbox Code Playgroud)
然后在连接中,您要"禁用"触发器以供使用
declare @triggerdisabled varbinary(128) = cast('disabled' as varbinary(128))
set context_info @triggerdisabled
Run Code Online (Sandbox Code Playgroud)
要"重新启用"它使用
set context_info 0x
Run Code Online (Sandbox Code Playgroud)