web-dev-qa-db-fra.com

Désactiver Activer Trigger SQL Server pour une table

Je veux créer un proc comme ci-dessous mais il y a une erreur sur la syntaxe . Quelqu'un pourrait-il signaler le problème?

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'.
115
pang

utilisez plutôt les commandes suivantes:

ALTER TABLE table_name DISABLE TRIGGER tr_name

ALTER TABLE table_name ENABLE TRIGGER tr_name
218
Wael Dalloul

La ligne précédente doit se terminer par ; car dans SQL DISABLEn'est pas un mot clé . Par exemple:

BEGIN
;
DISABLE TRIGGER ...
63
Mark Kane

Comme Mark l'a mentionné, la déclaration précédente devrait être terminée par un point-virgule. Pour que vous puissiez utiliser:

; DISABLE TRIGGER dbo.tr_name ON dbo.table_name
12
kaptan

Après que ENABLE TRIGGER OR DISABLE TRIGGER dans une nouvelle ligne, écrivez GO, Exemple:

DISABLE TRIGGER dbo.tr_name ON dbo.table_name

GO
-- some update statement

ENABLE TRIGGER dbo.tr_name  ON dbo.table_name

GO
2
Andrea

Vous trouverez ci-dessous le script dynamique pour activer ou désactiver les déclencheurs.

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
0
Shahab Naseer