Aprenda PL/SQL

Execução ordenada nas triggers

14/05/2009 | Tags:, | Categories: PL/SQL

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.

Comments are closed.