启用禁用触发器存储过程SQL Server 2012行为

时间:2015-09-11 10:39:34

标签: sql-server triggers sql-server-2012

我的问题很简单:如何在存储过程中启用和禁用触发器。

由于老SO社区,我现在有了解决方案。但是!

In This post

具体是什么行为以及为什么以下不能更新存储过程?

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;

当我重新找出查询的启用部分时,我出于好奇心刷新了我的表触发器。我发现它被禁用了。我的存储过程中的更新操作实际执行了这段代码。

对我来说,这很奇怪。我真的很想知道为什么......

1 个答案:

答案 0 :(得分:0)

您不能在存储过程的代码中使用GO