TSQL DISABLE TRIGGER是否作用于调用上下文?

1 t-sql sql-server triggers

在作为TSQL批处理的一部分发出"DISABLE TRIGGER"时,它是否限定为批处理的上下文,或者对于任何其他并发查询也可能禁用触发器?

如果是后者,需要什么样的锁定才能确保仅针对发出的查询禁用触发器?

Mar*_*ith 5

它在全球范围内被禁用 不能仅为单个连接禁用它.

您可以使用的一种技术是将以下内容添加到触发器中

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)