我的问题很简单:如何在存储过程中启用和禁用触发器。
由于老SO社区,我现在有了解决方案。但是!
具体是什么行为以及为什么以下不能更新存储过程?
BEGIN
GO
DISABLE TRIGGER DatabaseEventsTrigger ON DB;
...
GO
ENABLE TRIGGER DatabaseEventsTrigger ON DB;
END;
我还观察到,这实际上是实时启用和禁用触发器,而我只是更新存储过程而不执行它。然后不保存对该过程所做的更改。
有人可以解释一下这种行为吗?
编辑:
我正在更新我的存储过程是什么,但在结果窗口中我不是Command(s) completed successfully.
,而是(x) rows affected
BEGIN
GO
DISABLE TRIGGER DatabaseEventsTrigger ON DB;
go
--Run my update here where my conditions are met.
GO
ENABLE TRIGGER DatabaseEventsTrigger ON DB;
go
END;
当我重新找出查询的启用部分时,我出于好奇心刷新了我的表触发器。我发现它被禁用了。我的存储过程中的更新操作实际执行了这段代码。
对我来说,这很奇怪。我真的很想知道为什么......答案 0 :(得分:0)
您不能在存储过程的代码中使用GO
。