Problème de table en mutation (Oracle)

Résolu
cs_steppenwolf Messages postés 84 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 29 décembre 2006 - 21 févr. 2006 à 10:39
cs_steppenwolf Messages postés 84 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 29 décembre 2006 - 24 févr. 2006 à 11:13
Salut !

J'ai un problème sous Oracle lors de l'exécution d'une requête de mise à jour d'une table :

SQL> update emp set deptno=30 where ename='FORD';

Le problème vient du trigger suivant :

SQL> Create or replace trigger modif_affect_employe after update of Deptno on Emp


2for each row


3when (OLD.Deptno <> NEW.Deptno)


4DECLARE


5CURSOR C1 IS SELECT * FROM Dept;


6BEGIN


7FOR C1_enr IN C1 LOOP


8UPDATE Dept SET NbmetierDep=Departement(C1_enr.DEPTNO) WHERE DEPTNO=C1_enr.DEPTNO;


9END LOOP;


11END;

12/

L'erreur générée est la suivante :

ERROR at line 1:


ORA-04091: table M1MG11.EMP is mutating, trigger/function may not see it


ORA-06512: at "M1MG11.DEPARTEMENT", line 4


ORA-06512: at "M1MG11.MODIF_AFFECT_EMPLOYE", line 5


ORA-04088: error during execution of trigger 'M1MG11.MODIF_AFFECT_EMPLOYE'

Je pense que cette erreur est due au fait que le trigger accède à une table en cours de modification.
Comment faire pour résoudre ce problème ???

Merci d'avance.

Alex

1 réponse

cs_steppenwolf Messages postés 84 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 29 décembre 2006
24 févr. 2006 à 11:13
Alors j'ai trouvé la solution à mon problème :
il faut utiliser 2 triggers et une table temporaire afin de pouvoir faire l'update et ainsi virer le pb de table en mutation !!!

</FON< body>
3
Rejoignez-nous