Hello,
j'ai un petit problème avec un trigger.
J'ai une table "employes" qui contient entre autre le salaire de l'employé et le nombre d'enfants qu'il a.
Il faut que quand on modifie le nombre d'enfant, on enlève/ajoute 200.- par enfant au salaire.
Mon code actuel est :
Mais lors de la modification du nombre d'enfants d'un employé, j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 create or replace trigger TRG_PRIME_ENFANT after update on EMPLOYES -- sur la table EMPLOYES for each row -- pour chaque ligne begin if (:new.NB_ENF != :old.NB_ENF) then UPDATE EMPLOYES SET salaire = salaire + 200 * (:NEW.NB_ENF - :OLD.NB_ENF); end if ; end ;
Je ne comprend pas d'où vient le problème, quelqu'un aurait une piste pour m'aider ?UPDATE "ELCD42"."EMPLOYES" SET NB_ENF = '1' WHERE ROWID = 'AAAW+NAAEAAAEJkAAA' AND ORA_ROWSCN = '37229262'
One error saving changes to table "ELCD42"."EMPLOYES":
Row 1: ORA-04091: la table ELCD42.EMPLOYES est en mutation ; le déclencheur ou la fonction ne peut la voir
ORA-06512: à "ELCD42.TRG_PRIME_ENFANT", ligne 3
ORA-04088: erreur lors d'exécution du déclencheur 'EJR21.TRG_PRIME_ENFANT'
Merci![]()
Partager