2010-08-30 16 views

Respuesta

13

Si realmente tiene que crear el gatillo desactivado a continuación, crear y desactivarlo dentro de una transacción:

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 

el SMO están allí Cree porque disparador debe ser la primera instrucción en una por lotes, pero dependiendo de cómo despliegue su código, probablemente pueda hacer que se vea un poco más ordenado.

+2

+1 por responder la pregunta ... – gbn

0

En el estudio de gestión, expanda la carpeta Disparo bajo la tabla y haga clic con el botón derecho en Desencadenar y deshabilitar.

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, quiero un desencadenador desactivado en el momento de la creación. – regisbsb

0

T-SQL proporciona un TRIGGER DISABLE que consigue el mismo efecto. Puede encontrar los detalles aquí: DISABLE TRIGGER SYNTAX

+0

No, quiero un desencadenador desactivado en el momento de la creación. – regisbsb

0

La forma en que lo hice fue a exec tanto el crear y el inhabilitar como:

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

EXEC('DISABLE TRIGGER trigger_on_myTable ON myTable'); 

Esto me permitió crear y desactivar en el mismo script sin la ninguna de GO.

Cuestiones relacionadas