Problème de table mutante - count dans le trigger appliqué à la même table
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:
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)
Code:
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 reçois effectivement l'erreur ORA-20700: ORA-04091 table is mutating...
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