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 Firebird Discussion :

Trigger et update simultanés sur une même table


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 61
    Par défaut Trigger et update simultanés sur une même table
    Bonjour,

    Je souhaite, lors d'une insertion ou d'un update d'un tuple, vérifier la valeur d'un attribut et en fonction du résultat mettre à jour toutes les valeur de cet attribut pour le reste de la table :

    Ex: si AttA = 1 et AttB = toto alors remplacer tous les AttA par la valeur 0 pour les autres tuples dont AttB=toto.

    Il semble que le fait de faire un update d'une table dans un trigger portant sur la même table ne soit pas possible (Too many concurent exeception for the same request)

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
       selPernum = -1;
       SELECT pernum
       FROM con_personnes
       WHERE connum = NEW.connum AND perref = 1
       INTO :selPernum;
     
       IF (NEW.perref = 1 AND selPernum > -1) THEN
       BEGIN
          UPDATE con_personnes
          SET perref = 0
          WHERE pernum = :selPernum;
       END
    merci de votre aide

  2. #2
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Vous etes dans un trigger et vous updater la même table.... Le trigger est relancée, il va lui aussi faire un update de la même table qui va reresoliciter le trigger etc....

    Ca boucle....

    Si vous devez changer les valeurs de l'enregistrement en cours dans un trigger affectez simplement les bonnes valeurs aux variables d'environnements préfixées par NEW.

    Si vous devez mettre à jour des valeurs des autres enregistrements, celà est délicat dans un trigger car il va se relancé (c'est ce qui vous arrive).

    Donc soit en debut de trigger vous testez par un moyen ou un autre qu''il faut qu'il sorte du trigger sans updater soit vous n'utilisez pas un trigger ou vous changez votre schéma de données pour éviter ce genre de désagrément...

  3. #3
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 61
    Par défaut
    Merci du coup de main. Je vais effectivement modifier ma structure

Discussions similaires

  1. [9.2] Trigger sur une même table
    Par Leehan dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/03/2015, 08h57
  2. [EJB3.1] Update concurrents sur une même table
    Par le2tbomi dans le forum Java EE
    Réponses: 4
    Dernier message: 29/10/2010, 12h07
  3. Plusieurs trigger sur une même table / Performances
    Par tchoimars dans le forum PL/SQL
    Réponses: 2
    Dernier message: 27/01/2010, 15h58
  4. Trigger Insert after sur une même table
    Par soumimasen dans le forum PL/SQL
    Réponses: 3
    Dernier message: 29/05/2008, 18h49
  5. Trigger sur une même table
    Par lamanoo dans le forum DB2
    Réponses: 6
    Dernier message: 29/08/2007, 17h01

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