Deshabilitar Habilitar el servidor SQL Trigger para una tabla

128

Quiero crear un proceso como el siguiente, pero tiene un error en la sintaxis. ¿Alguien podría señalar el problema?

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'.
angustia
fuente

Respuestas:

242

use los siguientes comandos en su lugar:

ALTER TABLE table_name DISABLE TRIGGER tr_name

ALTER TABLE table_name ENABLE TRIGGER tr_name
Wael Dalloul
fuente
3
¿Para qué versiones de SqlServer es bueno? no funcionaba para mí, mientras DISABLE TRIGGER [dbo].[tr_name] on [schema].[table_name]trabajaba
Maslow
1
Tu respuesta es correcta. ¡Pero en realidad las declaraciones @pang no necesitan ninguna solución en lugar de una simple ;! Yo prefiero usar ENABLE Trigger. Es aplicable en todos los servidores SQL a partir de 2008.
ABS
Si necesita hacer todas las tablas en una base de datos, use esto: EJECUTAR sp_msforeachtable "¿ALTERAR TABLA? Deshabilitar el disparador TODO" ir
John Dyer
72

La línea anterior debe terminar con un ;porque en SQL DISABLE no es una palabra clave . Por ejemplo:

BEGIN
;
DISABLE TRIGGER ...
Mark Kane
fuente
11
Prefiero esta respuesta. Aborda el problema y ofrece la solución en lugar de una solución alternativa. Si bien las soluciones tienen su lugar, es importante comprender por qué se produjo un error en lugar de seguir ciegamente una solución sin contexto.
Bpainter
13

Como Mark mencionó, la declaración anterior debe terminar en punto y coma. Entonces puedes usar:

; DISABLE TRIGGER dbo.tr_name ON dbo.table_name
kaptan
fuente
2

Después de HABILITAR EL DISPARADOR O DESACTIVAR EL DISPARADOR en una nueva línea, escriba GO, Ejemplo:

DISABLE TRIGGER dbo.tr_name ON dbo.table_name

GO
-- some update statement

ENABLE TRIGGER dbo.tr_name  ON dbo.table_name

GO
Andrea
fuente
0

A continuación se muestra el script dinámico para habilitar o deshabilitar los activadores.

select 'alter table '+ (select Schema_name(schema_id) from sys.objects o 
where o.object_id = parent_id) + '.'+object_name(parent_id) + ' ENABLE TRIGGER '+
Name as EnableScript,*
from sys.triggers t 
where is_disabled = 1
Shahab Naseer
fuente
0

si desea ejecutar ENABLE TRIGGER directamente desde la fuente:

no podemos escribir así:

Conn.Execute "ENABLE TRIGGER trigger_name ON table_name"

en cambio, podemos escribir:

Conn.Execute "ALTER TABLE table_name DISABLE TRIGGER trigger_name"
ar3003
fuente
-1

A continuación se muestra la forma más sencilla.

Prueba el código

ALTER TRIGGER trigger_name DISABLE

Eso es :)

kavita londhe
fuente
No funciona en SQL Server> 2008 R2 y la pregunta es para MS SQL Server
kuklei