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

Oracle Discussion :

Probleme de lock sur un trigger after insert


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 87
    Points : 66
    Points
    66
    Par défaut Probleme de lock sur un trigger after insert
    Bonjour,
    j'ai un trigger after insert sur une table t qui appel une procédure stockée.

    Ma procédure stockée utilise ma table t pour mettre à jour une table t2.

    La compilation du trigger et de la proc se passent normalement, la procédure est testée et marche sans problème.

    Seulement, lors du déclenchement du trigger j'ai l'erreur suivante qui semble être une erreur dûe à un lock sur la table t .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-04091: la table t est en mutation ; le déclencheur ou la fonction ne peut la voir
    Que faut-il faire dans un cas pareil ?

    Merci.
    Science sans conscience ..

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Bonjour.
    Y a-t-il un "commit" dans votre procédure?

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 87
    Points : 66
    Points
    66
    Par défaut
    Re,
    Non il n'y a pas de commit dans ma procédure.
    Mais je crois que c'est ça le problème.
    il y a une instruction commit aprés l'insert ==> il se fait aprés le déclenchement du trigger.
    d'ou le lock.

    Qu'en pensez vous ?
    Que dois-je faire ?

    Merci.
    Science sans conscience ..

  4. #4
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Peux tu envoyer ton code ?


    Sinon ce que tu peux faire : Ne pas utliser de trigger !!



    sinon voir ici des solutions possibles

    http://sgbd.developpez.com/oracle/ora-04091/

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 87
    Points : 66
    Points
    66
    Par défaut
    Re,

    Je crois que je ne vais pas utiliser de trigger, j'ai trouver une alternative dans la couche programmation.

    C'est dommage qu'un trigger after insert se déclenche en fait avant la fin réelle de l'insert (delock compris)

    En tous cas merci à vous pour m'avoir aider.

    A bientôt.
    Science sans conscience ..

  6. #6
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Citation Envoyé par funboard Voir le message
    Bonjour,
    Seulement, lors du déclenchement du trigger j'ai l'erreur suivante qui semble être une erreur dûe à un lock sur la table t .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-04091: la table t est en mutation ; le déclencheur ou la fonction ne peut la voir
    .
    L'erreur est une erreur tres classique et maintes fois discutée dans ce forum.
    On ne peut pas directement modifier une table qui serait modifiée par ailleurs dans la même transaction (celle qui porte le trigger ou une autre en cascade) !
    Faire une recherche sur "MUTATING TABLE"
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

Discussions similaires

  1. Trigger after insertion pas validée
    Par guigeek dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/12/2006, 13h37
  2. Trigger after insertion pas validée
    Par guigeek dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/12/2006, 14h23
  3. Un Trigger After INSERT peut-il empêcher l'INSERT ?
    Par cian2006 dans le forum Oracle
    Réponses: 3
    Dernier message: 13/09/2006, 17h27
  4. Trigger after insert, sans each row, possible ??
    Par veenie dans le forum Oracle
    Réponses: 5
    Dernier message: 16/02/2006, 15h18

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