2009-09-07 18 views
98

Voglio creare un proc come in basso ma ha errori di sintassi. Qualcuno potrebbe segnalare il problema?Disabilita Abilita server Trigger SQL

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

risposta

189

utilizzare i seguenti comandi:

ALTER TABLE table_name DISABLE TRIGGER tr_name 

ALTER TABLE table_name ENABLE TRIGGER tr_name 
+0

a quali versioni di SqlServer è utile? non funziona per me, mentre 'DISABLE TRIGGER [dbo]. [tr_name] su [schema]. [table_name]' ha funzionato – Maslow

+0

Funziona per me (Sql Server 2014). –

+0

La tua risposta è corretta. Ma in realtà le dichiarazioni @pang non hanno bisogno di alcuna correzione invece di un semplice ';'! Preferisco usare 'ENABLE Trigger'. È applicabile su tutti i server SQL a partire dal 2008. –

53

La linea prima necessità per terminare con un ; perché in SQL DISABLEis not a keyword. Ad esempio:

BEGIN 
; 
DISABLE TRIGGER ... 
+7

Preferisco di gran lunga questa risposta. Affronta il problema e fornisce la soluzione anziché una soluzione alternativa. Mentre i workaround hanno il loro posto, è importante capire perché si è verificato un errore invece di seguire ciecamente una soluzione senza contesto. – Bpainter

+2

Questo dovrebbe essere contrassegnato come la risposta corretta. – eddiewould

11

Come indicato da Mark, la dichiarazione precedente deve essere terminata in punto e virgola. Così si può utilizzare:

; DISABLE TRIGGER dbo.tr_name ON dbo.table_name 
0

Di seguito è il modo più semplice

Prova il codice

ALTER TRIGGER trigger_name DISABLE

Questo è tutto :)

0

Dopo il grilletto o TRIGGER DISABILITA ABILITA in un nuova riga scrivere GO, Esempio:

DISABLE TRIGGER dbo.tr_name ON dbo.table_name 

GO 
-- some update statement 

ENABLE TRIGGER dbo.tr_name ON dbo.table_name 

GO 
Problemi correlati