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 :

Probléme avec clé unique composée


Sujet :

SQL Firebird

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut Probléme avec clé unique composée
    Bonjour a tous
    je montre dabord la structure de ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE MESINFORMATIONS (
        LACLE           INTEGER NOT NULL,
        CHAMP1          VARCHAR(80) NOT NULL,
        CHAMP2          VARCHAR(80),
        CHAMP3          VARCHAR(80),
        CHAMP4          VARCHAR(80),
        CHAMP5          VARCHAR(80),
        CHAMP6          VARCHAR(80),
        PROJETCODE      INTEGER NOT NULL,
        EXOENCOURS      VARCHAR(20) NOT NULL,
    );
    ALTER TABLE MESINFORMATIONS ADD PRIMARY KEY (LACLE);
    Ensuite la clé d'unicité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE MESINFORMATIONS ADD CONSTRAINT MACONTRAINTE UNIQUE (CHAMP1, PROJETCODE, EXOENCOURS);
    Ensuite une procédure qui met a jour ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    SET TERM ^ ;
     
    CREATE OR ALTER PROCEDURE MAJRENOUV (
        tatami1 varchar(80),
        tatami2 varchar(20),
        tatami3 varchar(80))
    as
    BEGIN
      UPDATE mesinformations
      SET
      mesinformations.exoencours=:tatami2,
      mesinformations.champ6=:tatami3
      WHERE mesinformations.champ1=:tatami1 ;
     /* SUSPEND;*/
    END^
    Lorsque pour la procédure j'insère les valeurs 4230 pour tatami 1, tata pour tatami3 , 2009-2010 pour tatami2 (au niveau de la procédure) voila le code d'erreur que j'ai :

    Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values.
    violation of PRIMARY or UNIQUE KEY constraint " MACONTRAINTE" on table "MESINFORMATIONS".
    At procedure 'MAJRENOUV' line: 7, col: 3.
    Apparemment ça s'apparente a une duplication de données ! le problème est pour cette ligne que je veux modifier j'ai la valeur : 4230, 18, 2010-2011 valeur unique au niveau de ma base. Donc j'ai 4230 et 18 qui se répète mais 2010-2011 est remplacé par 2009-2010 Normalement tout devrait passer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE mesinformations
      SET
      mesinformations.exoencours='2009-2010',
      mesinformations.champ6='tata'
      WHERE mesinformations.champ1='4230';
    je n'arrive pas a comprendre.

    Merci de m'aider

  2. #2
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    Bon la j'ai utiliser la clé primaire pour m'en sortir ! je ne sais pas si c'est normale mais bon pourvu que ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE mesinformations
      SET
      mesinformations.exoencours='2009-2010',
      mesinformations.champ6='tata'
      WHERE mesinformations.lacle='6';
    Merci à tous

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par devalender Voir le message
    Bon la j'ai utiliser la clé primaire pour m'en sortir ! je ne sais pas si c'est normal
    c'est tout à fait normal et logique
    il pouvait y avoir (il y avait certainement) plusieurs enregistrements avec Champ1='4230'; la clause WHERE n'était pas suffisamment explicite puisqu'elle retournait un ensemble d'enregistrements
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    la clause WHERE n'était pas suffisamment explicite puisqu'elle retournait un ensemble d'enregistrements
    oui ça je l'ai bien compris après ! après plusieurs essais.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec clé unique composée
    Par dré kam dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/04/2015, 22h50
  2. Problème avec la validation composée
    Par Stephane75000 dans le forum Struts 1
    Réponses: 2
    Dernier message: 14/12/2010, 17h31
  3. Problème avec un nouveau composant de TImage
    Par 123djimy dans le forum Langage
    Réponses: 4
    Dernier message: 22/09/2010, 08h51
  4. [Lazarus] [0.9.26] Problème avec le nouveau composant TDbf
    Par ovni76 dans le forum Lazarus
    Réponses: 1
    Dernier message: 07/12/2008, 15h11
  5. [CONCEPTION MCD] Problème avec les clés composées
    Par fabriceMerc dans le forum Schéma
    Réponses: 3
    Dernier message: 14/02/2005, 09h43

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