utiliza usar unica trigger siguientes ser qué puede para lugar lote las instrucciones instruccion función excepto estructura ejemplos editar disparador desencadenante desencadenador definir debe create crear sql sql-server sql-server-2005 triggers ddl

usar - ¿Cómo puedo crear un desencadenador desactivado en SQL Server 2005?



qué es un desencadenador sql (4)

Al usar Oracle, puede crear un desencadenador desactivado que especifique la palabra DISABLE antes del cuerpo del disparador. ¿Cómo puedo lograr el mismo efecto en el servidor Sql?


En el estudio de gestión, expanda la carpeta del desencadenador debajo de la tabla y haga clic con el botón derecho en Activar y desactivar.

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


La forma en que lo hice fue para EXEC crear y deshabilitar como:

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

Esto me permitió crear y deshabilitar en el mismo script sin ningún GO.


Si realmente debe crear el desencadenador deshabilitado, créelo y desactívelo 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

Los GO están ahí porque CREATE TRIGGER debe ser la primera declaración en un lote, pero dependiendo de cómo implemente su código, probablemente pueda hacer que se vea un poco más ordenado.