Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2004, 16h27   #1
Invité régulier
 
Inscription : août 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 61
Points : 9
Points : 9
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 :
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
Equus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2004, 18h57   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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...
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2004, 09h07   #3
Invité régulier
 
Inscription : août 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 61
Points : 9
Points : 9
Merci du coup de main. Je vais effectivement modifier ma structure
Equus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h08.


 
 
 
 
Partenaires

Hébergement Web