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

Langage SQL Discussion :

Problème avec clé unique composée


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2011
    Messages : 247
    Points : 163
    Points
    163
    Par défaut Problème avec clé unique composée
    Bonjour,

    J'ai un problème avec une table de ma base de données MySQL. Voici à quoi elle ressemble :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Images
    ------------
     id
     name
     page_name
     filename
    Je ne veux pas que deux lignes de cette table aient le même "page_name" et "filename" (ces champs sont du type VARCHAR type). J'ai donc fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table images add constraint page_image unique(page_name, filename);
    Ça a l'air de fonctionner pas trop mal, mais je ne suis souvent pas autorisé à ajouter des données à cause de cette contrainte, et je comprends pas pourquoi. Voici ce que j'ai dans cette table en ce moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    id    | name                    | page_name | filename
    | 187 | Fotolia_59179246_XL.jpg |           | $1$sJY8OY2y$Sbl3TdqfuDmzuct4uq1Dr0.jpg |
    | 188 | Fotolia_21287471_L.jpg  |           | $1$RYqR0EWw$zj9e2bccgx7yRoAfZTaL.jpg   |
    | 189 | Fotolia_59179246_XL.jpg | Home page | $1$sJY8OY2y$Sbl3TdqfuDmzuct4uq1Dr0.jpg |
    | 190 | Fotolia_59195969_L.jpg  |           | $1$Nl2k4xlG$b8M3BZqo8ndfRB04nk2J.jpg   |
    | 211 | Fotolia_59195969_L.jpg  | Tariffe   | $1$Nl2k4xlG$b8M3BZqo8ndfRB04nk2J.jpg   |
    Mais la requête suivant ne passe pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into images(name, page_name, filename) select name, 'Tarif', filename from images where name like '59179246_XL%';
    J'obtiens ce message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1062 (23000): Duplicate entry 'Tarif-$1$sJY8OY2y$Sbl3TdqfuDmzuct4uq1Dr0.jpg' for key 'page_image'
    Je ne comprends pas pourquoi je l'obtiens.

    Merci d'avance pour vos éclaircissements.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 059
    Points : 38 269
    Points
    38 269
    Billets dans le blog
    9
    Par défaut
    Il faut exécuter la requete select seule, pour vérifier quels sont les enregistrements récupérés, il y en a au moins 2 avec clef identique d'où l'erreur
    En même temps faire un insert suite à un select avec prédicat where..like es de ce point de vue très risqué

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par dré kam Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select name, 'Tarif', filename from images where name like '59179246_XL%';
    Bonjour,
    l'erreur est très claire : Tu essayes d'insérer des lignes qui ne respectent pas la contrainte d'unicité que tu a définie. Après tu ne donnes pas tout le contenu de ta table car le like '59179246_XL%' ne devrait te renvoyer aucune ligne par rapport au contenu de table que tu donnes...

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

Discussions similaires

  1. Probléme avec clé unique composée
    Par devalender dans le forum SQL
    Réponses: 3
    Dernier message: 03/05/2014, 13h04
  2. Problème avec la validation composée
    Par Stephane75000 dans le forum Struts 1
    Réponses: 2
    Dernier message: 14/12/2010, 18h31
  3. Problème avec un nouveau composant de TImage
    Par 123djimy dans le forum Langage
    Réponses: 4
    Dernier message: 22/09/2010, 09h51
  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, 16h11
  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, 10h43

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