IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Erreur table en mutation


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    bruce-willis
    Invité(e)
    Par défaut Erreur table en mutation
    Bonjour,

    Voir l'erreur que j'obtiens lorsque je veux supprimer un record dans une table (DELETE FROM TABLE1 WHERE ID = '5'):
    ORA-04091: table SCH_WILL.TABLE4 is mutating, trigger/function may not see it
    ORA-06512: at "SCH_WILL.AFTER_DEL_ENTITY", line 3
    ORA-04088: error during execution of trigger 'SCH_WILL.AFTER_DEL_ENTITY'


    Le code de ce trigger en erreur est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM OTHERTABLE  WHERE ID = :OLD.IDTABLE8;
    OTHERTABLE est une table parent de TABLE4.

    Il semble que la suppression dans TABLE1 (DELETE FROM TABLE1 WHERE ID = '5') déclenche le trigger de la table la plus enfant qui est TABLE4, c'est pourquoi cette table est dite en mutation peut-être ??
    Voici le lien entre les tables (parent vers enfant) :
    TABLE1<-TABLE2<-TABLE3<-TABLE4
    et
    OTHERTABLE<-TABLE4

    Comment l'exécution a-t-il atteint TABLE4 alors que je fais une suppression sur TABLE1 et le record à supprimer n'a aucune correspondance à TABLE2 ni TABLE3 et bien evidemment TABLE4

  2. #2
    bruce-willis
    Invité(e)
    Par défaut
    J'ai pensé comme solution le fait de désactiver le foreign key entre TABLE3<-TABLE4 temporairement pendant le delete dans TABLE1 !!
    Mais ça ne supprime pas l'erreur de la table en mutation !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EXECUTE IMMEDIATE 'ALTER TABLE TABLE4 DISABLE CONSTRAINT FK_TABLE4_2_TABLE3';
    DELETE FROM TABLE1 WHERE ID = '5'; 
    EXECUTE IMMEDIATE 'ALTER TABLE TABLE4 ENABLE CONSTRAINT FK_TABLE4_2_TABLE3';
    (exécution de la deletion dans une procédure)

Discussions similaires

  1. [Oracle8i][Trigger]Table en mutation
    Par Drizzt [Drone38] dans le forum Administration
    Réponses: 6
    Dernier message: 06/11/2009, 13h58
  2. erreur table externe
    Par tipon dans le forum SQL
    Réponses: 2
    Dernier message: 06/06/2007, 21h10
  3. erreur table inconnue
    Par hamza00 dans le forum WinDev
    Réponses: 2
    Dernier message: 28/05/2007, 08h51
  4. Gestion des erreurs: table des erreurs
    Par capitaine dans le forum Access
    Réponses: 1
    Dernier message: 06/07/2006, 20h10
  5. Curseurs et tables en mutation
    Par ze_patoche dans le forum Oracle
    Réponses: 7
    Dernier message: 18/10/2005, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo