martes, 1 de marzo de 2011

Orden de Ejecucion de los Triggers

En una tabla podemos tener diferentes triggers para diferentes eventos, INSERT,  UPDATE o DELETE.
Cuando tenemos varios triggers en una tabla y necesitamos definir el orden de ejecucion,  tipico ejemplo el de la auditoria que necesitamos saber la cantidad de filas afectadas antes que se disparen el resto de triggers a traves de @@ROWCOUNT.

Entonces nos auxiliamos de sp_settriggerorder, un procedimiento del sistema que definira el primero y el ultimo trigger en ejecutarse, no importando los demas para una categoria especifica.

Ejemplo:
sp_settriggerorder 'trg_Auditoria', 'First', 'UPDATE'

Aqui definimos que el trigger trg_Auditoria sera el primero en ejecutarse para los triggers del tipo UPDATE.

Aqui las opciones:


First
El desencadenador se activa primero.
Last
El desencadenador se activa el último.
None
El desencadenador se activa sin un orden definido.

El ultimo parametro hace referencia al evento que protege el trigger mismo,  el cual podra ser DML o bien DDL.

1 comentario: