Problème de table en mutation (Oracle) [Résolu]

cs_steppenwolf 84 Messages postés jeudi 18 septembre 2003Date d'inscription 29 décembre 2006 Dernière intervention - 21 févr. 2006 à 10:39 - Dernière réponse : cs_steppenwolf 84 Messages postés jeudi 18 septembre 2003Date d'inscription 29 décembre 2006 Dernière intervention
- 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
Afficher la suite 

1 réponse

Répondre au sujet
cs_steppenwolf 84 Messages postés jeudi 18 septembre 2003Date d'inscription 29 décembre 2006 Dernière intervention - 24 févr. 2006 à 11:13
+3
Utile
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>
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_steppenwolf

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.