2010-08-30 20 views

risposta

13

Se davvero necessario creare il grilletto disattivato quindi creare e disattivarla all'interno di una transazione:

begin tran 
go 
create trigger t_i on t after insert as begin /* trigger body */ end 
go 
disable trigger t_i on t 
commit 
go 

I GO sono perché ci CREATE TRIGGER deve essere la prima istruzione in un batch, ma a seconda di come distribuisci il tuo codice probabilmente puoi renderlo un po 'più ordinato.

+2

+1 per rispondere effettivamente alla domanda ... – gbn

0

In Management Studio Espandere la cartella Trigger sotto la tabella e fare clic con il pulsante destro del mouse su Trigger e Disattiva.

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } 
ON { object_name | DATABASE | ALL SERVER } [ ; ] 

MSDN:DISABLE TRIGGER (Transact-SQL)

ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } 
ON { object_name | DATABASE | ALL SERVER } [ ; ] 

MSDN:ENABLE TRIGGER (Transact-SQL)

sql-server-disable-all-triggers-on-a-database-disable-all-triggers-on-all-servers

+0

No, voglio un trigger disabilitato al momento della creazione. – regisbsb

0

T-SQL fornisce una dichiarazione TRIGGER DISABLE che compie la stessa cosa. È possibile trovare i dettagli qui: DISABLE TRIGGER SYNTAX

+0

No, voglio un trigger disabilitato al momento della creazione. – regisbsb

0

Il modo in cui ho fatto è stato a exec sia il creare e il disable come:

EXEC('CREATE TRIGGER trigger_on_myTable ON myTable <Trigger body> '); 

EXEC('DISABLE TRIGGER trigger_on_myTable ON myTable'); 

Questo mi ha permesso di creare e disattivare nello stesso script, senza alcuna della GO.

Problemi correlati