The correct order is as below.
Trigger firing sequence:
1) Before statement level triggers, if present
2) For each row
a) Before row level triggers, if present
b) After row level triggers, if present
3) Actual Statement
4) After statement level triggers
create table d(col1 number primary key)
create table c(col1 number references d(col1))
create or replace trigger c_b4sttmnt
before insert on c
declare
vnum number;
begin
dbms_output.put_line('c_b4sttmnt');
end;
create or replace trigger c_aftrsttmnt
after insert on c
declare
vnum number;
begin
dbms_output.put_line('c_aftrsttmnt');
end;
create or replace trigger c_aftrrow
after insert on c
for each row
declare
vnum number;
begin
dbms_output.put_line('c_aftrrow');
end;
create or replace trigger c_b4row
before insert on c
for each row
declare
vnum number;
begin
dbms_output.put_line('c_b4row');
end;
Please execute the following command which will fail after first 3 triggers.
insert into c values(1);
c_b4sttmnt
c_b4row
c_aftrrow
ORA-02291: integrity constraint (STAGE.SYS_C0049041) violated - parent key not
found
Regards
- BHAILOGONLINE