Execução ordenada nas triggers
14/05/2009
A partir do Oracle 8i é possível criar mais de uma trigger do mesmo tipo na mesma tabela. Exemplo: duas triggers AFTER EACH ROW on INSERT. O tipo de trigger determina a ordem de execução: As BEFORE são executadas antes, e as AFTER depois. Contudo, como saber qual trigger executará primeiro quando se tem duas AFTER EACH ROW on INSERT ?
A execução das triggers neste caso seria algo “randomico”, pois não havia uma forma de definir a ordem de execução.
No Oracle 11g, você pode adicionar uma cláusula que força a ordem de execução das triggers:
create or replace trigger tr_pay_follow_up before update on payments for each row FOLLOWS TRIGGER_ANTERIOR begin ... etc ...
Neste caso a cláusula FOLLOWS força que a trigger seja disparada apenas após a trigger citada.
