禁用表的启用触发器SQL服务器

pan*_*ang 125 sql-server triggers

我想创建一个如下所示的proc,但它在语法上有错误.谁有人指出这个问题?

Create PROCEDURE [dbo].[my_proc] AS

BEGIN

DISABLE TRIGGER dbo.tr_name ON dbo.table_name

-- some update statement

ENABLE TRIGGER dbo.tr_name  ON dbo.table_name

END

** Error Message : Incorrect syntax near 'ENABLE'.
Run Code Online (Sandbox Code Playgroud)

Wae*_*oul 235

请改用以下命令:

ALTER TABLE table_name DISABLE TRIGGER tr_name

ALTER TABLE table_name ENABLE TRIGGER tr_name
Run Code Online (Sandbox Code Playgroud)

  • 什么版本的SqlServer适合这个?不能为我工作,而[架构]上的'DISABLE TRIGGER [dbo].[tr_name].[table_name]`工作 (3认同)
  • 你的回答是正确的。但实际上@pang 语句不需要任何修复而不是简单的`;`!我更喜欢使用“启用触发器”。它适用于从 2008 开始的所有 SQL Server。 (2认同)

小智 67

之前的行需要以;SQL 结尾,因为在SQL DISABLE 中不是关键字.例如:

BEGIN
;
DISABLE TRIGGER ...
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个答案.它解决了问题并提供了解决方案而不是解决方法.虽然变通办法占有一席之地,但重要的是要了解错误发生的原因,而不是盲目地遵循没有上下文的变通方法. (9认同)

kap*_*tan 12

正如马克所说,以前的陈述应以分号结尾.所以你可以使用:

; DISABLE TRIGGER dbo.tr_name ON dbo.table_name
Run Code Online (Sandbox Code Playgroud)