J'ai tenté de recréer votre scénario et cela semble fonctionner correctement pour moi. Donc je pense que vous devriez revoir votre implémentation. Cherchez les différences entre ce que vous avez codé et ce qui suit ici, et c'est peut-être là que réside la réponse.
Voici mes déclencheurs
SQL> create or replace
2 trigger t1_compound
3 for insert or update on t1
4 compound trigger
5
6 after statement is
7 begin
8 update t2 set t1_id = nvl(t1_id,0) + 1 where cod = 12;
9 end after statement;
10 end;
11/
Trigger created.
SQL>
SQL> create or replace
2 trigger t2_compound
3 for insert or update on t2
4 compound trigger
5
6 after statement is
7 begin
8 update t3 set t2_id = nvl(t2_id,0) + 1 where cod = 12;
9 end after statement;
10 end;
11/
Trigger created.
SQL>
... voici les données de test ...
SQL> select id, cod from t1
2/
ID COD
---------- ----------
1 12
SQL> select id, cod, t1_id from t2
2/
ID COD T1_ID
---------- ---------- ----------
11 12
SQL> select id, cod, t2_id from t3
2/
ID COD T2_ID
---------- ---------- ----------
111 12
SQL>
... et c'est ce qui arrive quand je lance une mise à jour sur la première table ...
SQL> update t1 set dt = sysdate
2 where id = 1
3/
1 row updated.
SQL> select id, cod, t1_id from t2
2/
ID COD T1_ID
---------- ---------- ----------
11 12 1
SQL> select id, cod, t2_id from t3
2/
ID COD T2_ID
---------- ---------- ----------
111 12 1
SQL>
Qu'est-ce que la gâchette THEOTHERTABLE ressembler? –
c'est un déclencheur simple qui se déclenche à la mise à jour de THEOTHERTABLE. J'ai essayé de sortie à dbms_output avant chaque ligne, et après l'instruction et il se déclenche juste la première fois après la compilation du déclencheur TRIGGER – Joao