[SQL,ORACLE]Message d'erreur mutating, trigger....(RESOLU)

Message d'erreur mutating, trigger....(RESOLU) [SQL,ORACLE] - SQL/NoSQL - Programmation

Marsh Posté le 24-10-2007 à 20:27:14    

Bonsoir,je vous explique!
j'ai un trigger qui, lorsqu'il y a une ligne qui est modifiée, regarde si une certaine colonne est superieure à 5 et si c'est le cas doit copier toute la ligne modifiée dans une vue créee préalablement.
 
le problème est que lorsque je modifie une ligne j'ai ce message
ORA-04091: table IUTB203.CHERCHEUR is mutating, trigger/function may not see it  
 
Je vois pas trop l'erreur donc si vous voyez pourquoi n'hésitez pas à me faire signe .
 
merci beaucoup d'avance!
PS je peut poster le code complet si vous préférez


Message édité par dibelup le 25-10-2007 à 17:57:45
Reply

Marsh Posté le 24-10-2007 à 20:27:14   

Reply

Marsh Posté le 24-10-2007 à 20:37:14    

erreur classique.  
dans ton trigger, qui est surement un trigger "For each Row", tu refais un select/update/delete sur la même table.
Malheureusement, tu ne peux pas.  
 
Maintenant, il y a des astuces pour contourner le problème, mais elle ne sont vraiment pas évidente.

Reply

Marsh Posté le 24-10-2007 à 21:34:29    

en effet...tu as raison,je fais un select
je vois pas trop comment faire autrement car le traitement de mon if consiste a recopier ma ligne updatée et donc je suis obligé de faire un select...
je vais etudier la chose je te remercie

Reply

Marsh Posté le 25-10-2007 à 10:34:57    

euh...
et la table locale "deleteled" t'y as pensé ? logiquement elle contient l'ensemble des lignes mises à jour dans leur état original...
 
faut juste boucler dessus à la même vitesse de la table "inserted" histoire de les garder synchro et c'est bon


Message édité par MagicBuzz le 25-10-2007 à 10:35:58
Reply

Marsh Posté le 25-10-2007 à 17:57:04    

jai trouvé  
je faisai un select ...... in (select.....) et ça il n'aimait pas...
C'était inutile en +
Je vous remerci pour votre aide!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed