Quando si utilizza Oracle è possibile creare un trigger disabilitato che specifica la parola DISABLE prima del corpo del trigger. Come posso ottenere lo stesso effetto in Sql Server?Come posso creare un trigger disabilitato in SQL Server 2005?
risposta
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.
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
No, voglio un trigger disabilitato al momento della creazione. – regisbsb
T-SQL fornisce una dichiarazione TRIGGER DISABLE che compie la stessa cosa. È possibile trovare i dettagli qui: DISABLE TRIGGER SYNTAX
No, voglio un trigger disabilitato al momento della creazione. – regisbsb
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.
+1 per rispondere effettivamente alla domanda ... – gbn