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

 Firebird Discussion :

Erreur : Too many concurent execpetion of the same request


Sujet :

Firebird

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 61
    Points : 35
    Points
    35
    Par défaut Erreur : Too many concurent execpetion of the same request
    Bonjour,

    Voici mon problème :

    Je possède une table société et une table personne. Chaque société possède plusieurs personnes mais une seule d'entre-elles est dite "référente", c.a.d la personne par défaut de la société.
    La table personne contient donc un champ SOCNUM (clé étarngère de la table société) et un champ PERREF qui prend la valeur 0 (non) ou 1 (oui) et qui définit si la personne est la référence de la société.

    Lorsque je veux créer une personne, ou modifier la valeur de SOCNUM ou de PERREF pour une personne donnée, i.e. que je l'affecte à une autre société ou que je la désigne comme référent, je dois modifier le reste de la table en cascade pour faire en sorte qu'il n'esxiste pas 2 référents pour une même société.

    Je fais cela par des triggers avec un select qui me dit si il existe déjà un référent puis un update de la table. Je reçois alors un message d'IBEXPERT me disant : Too many concurent execpetion of the same request

    Comment faire ?

    Merci de votre aide

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Sans vouloir critiquer, vous avez un petit probleme de modèle.

    Vous avez ces propositions :

    Une société peux avoir plusieurs personnes
    Une personne appartient à une seule société

    Qui vous ont justement conduit à créer une table société et une table personne dans lequel il y a une clé étrangère vers la table société.

    Ensuite vous avez la proposition suivante :
    Une société possède une et une seule personne de référence.
    Une personne de référence appartient à une seule société.

    Ce qui aurai du vous ammenée à créer une clé étrangère Pers_Ref_Societe dans la table société. (Celle clé correspond à l'identifiant de la personne qui est la référence de cette société).

    Ainsi le changement de personne de référence d'une société se résume au changement de la clé étrangère Pers_Ref_Societe de la table société. Sans devoir mettre à jour toutes les personnes de cette société.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 61
    Points : 35
    Points
    35
    Par défaut
    Je vois, mais dans ce cas la je me trouve en présence de références circulaires :

    je ne peux pas creer de société sans avoir au préalable créé la personne mentionnée par la clé étrangère Pers-Ref_Société et je ne peux pas creer cette personne avant d'avoir créé la société mentionnée par la clé étrangère soc_ref_personne !!

    Je suis donc bloqué.

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Deux solutions :
    Soit vous gérez cette clé étrangère par programme et non avec le foreign key. Dans ce cas cette colonne n'est autre qu une des données de la société qui peut etre nul (pour la création) cette colonne vous l'indexée pour des raisons de performances évidente.

    Soit vous créez une troisième table (c'est la version luxe...) cette table contient deux clés étrangères celle de la société et celle de personne et pourquoi pas un type_lien (qui dans votre cas sera toujours égale à "référence" pour indiquer que c'est cette liaison qui indique qui est la personne référence de la société. Plus tard si vous avez d'autres besoins vous pourrez enrichir le type de lien par exemple pour ajouter en plus de la personne référence, la personne qui s'occupe des factures ou tout autres personnes que vous aurez besoin d'identifier au sein de l'entreprise). Vous retirez bien sur la clé étrangère dans la société.
    Vous pouvez créer la société puis les personnes attachée à cette société. Lorsque vous connaitrez la personne référence de la société il vous suffira d'insérer une ligne dans cette table. ID_société, ID_personne, "Reference".

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 61
    Points : 35
    Points
    35
    Par défaut
    Merci pour tout.

    Je pense effctivement que la 3e table est la meilleure solution. J'aurai du y penser depuis longtemps...

Discussions similaires

  1. Erreur : Too many resources to handle
    Par Just-Soft dans le forum Composants VCL
    Réponses: 1
    Dernier message: 13/01/2009, 00h02
  2. Erreur : too many parameters
    Par Alain Dionne dans le forum Langage
    Réponses: 8
    Dernier message: 12/06/2008, 15h39
  3. erreur: too many characters in constant...
    Par miminou dans le forum C++
    Réponses: 4
    Dernier message: 23/11/2005, 11h37
  4. erreur "too many initializers"
    Par miminou dans le forum C++
    Réponses: 4
    Dernier message: 19/10/2005, 21h53
  5. erreurs "too many connexion"... etc
    Par Jamie88 dans le forum Requêtes
    Réponses: 6
    Dernier message: 01/09/2005, 06h32

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