2008-09-18 11 views

Respuesta

6

Utilice sp_settriggerorder. Puede especificar el primer y el último disparador para disparar dependiendo de la operación.

sp_settriggerorder on MSDN

Desde el enlace de arriba:
A. Ajuste de la orden de encendido para un desencadenador DML
El siguiente ejemplo especifica que el gatillo uSalesOrderHeader ser el primer gatillo para disparar después de una operación de actualización se produce en el Tabla Sales.SalesOrderHeader.

 
USE AdventureWorks; 
GO 
sp_settriggerorder 
    @triggername= 'Sales.uSalesOrderHeader', 
    @order='First', 
    @stmttype = 'UPDATE'; 

B. Ajuste de la orden de encendido de un desencadenador DDL
El siguiente ejemplo especifica que el gatillo ddlDatabaseTriggerLog ser el primer gatillo para disparar después de un evento ALTER_TABLE se produce en la base de datos AdventureWorks.

 
USE AdventureWorks; 
GO 
sp_settriggerorder 
    @triggername= 'ddlDatabaseTriggerLog', 
    @order='First', 
    @stmttype = 'ALTER_TABLE', 
    @namespace = 'DATABASE'; 
1

Puede usar sp_settriggerorder para definir el orden de cada activador en una tabla.

Sin embargo, yo diría que sería mucho mejor tener un disparador único que haga varias cosas. Esto es particularmente por lo que si el orden es importante, ya que esa importancia no será muy obvia si tiene múltiples factores desencadenantes. Imagínese que alguien intenta respaldar la base de datos meses/años en la pista. Por supuesto, es probable que existan casos en los que necesite tener múltiples factores desencadenantes o que realmente sea un mejor diseño, pero comenzaría a suponer que debería tener uno y trabajar desde allí.

0

Rememebr si cambia el orden de activación, alguien más podría venir más tarde y reorganizarlo de nuevo. ¿Y dónde documentaría cuál debería ser el orden de activación para que un desarrollador de mantenimiento sepa que no debe meterse con el orden o las cosas se romperán? Si dos tareas desencadenantes definitivamente deben realizarse en un orden específico, la única ruta segura es colocarlas en el mismo desencadenador.

Cuestiones relacionadas