Bonjour à tous,
Je sais que ce problème a été reporté mainte fois, mais je n'arrive pas à trouver une solution sans pour autant avoir à créer d'autre package ou
d'autre trigger, ou une table temporaire..
J'ai le trigger suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE OR REPLACE TRIGGER company_class_pre_ins BEFORE INSERT ON g_dosser FOR EACH ROW .... SELECT COUNT(*) INTO existing_doss_cnt FROM g_dosser doss WHERE doss.doss_num= :new.doss_num AND doss.doss_type= :new.doss_type;
et un autre trigger qui contient la requête suivante (donc lorsqu'on a un tel insert le premier trigger se déclenche)
je reçois effectivement l'erreur ORA-20700: ORA-04091 table is mutating...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 INSERT INTO g_dosser( doss_num, doss_type, doss_code, doss_group_code, doss_id_fl) SELECT :new.dbd_num, dbd_type, decode( dbd_ind, 'i', 'itnn', 'a', 'itnn', NULL ), decode( dbd_ind, 'b', 'rppd', 'a', 'rppd', NULL ), 'n' FROM dbd_type WHERE :new.dbd_flag = 'y';
je sais que le problème provient du premier count(*) puisqu'il est appliqué sur la table elle même, mais je n'arrive pas à contourner cette erreur
Merci pour votre aide
Partager