[11g] Problème avec trigger
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 :
Code:
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 ; |
Mais lors de la modification du nombre d'enfants d'un employé, j'ai l'erreur suivante :
Citation:
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'
Je ne comprend pas d'où vient le problème, quelqu'un aurait une piste pour m'aider ?
Merci ;)