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

Requêtes MySQL Discussion :

Problème de création de clés étrangères


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Femme Profil pro
    informaticienne
    Inscrit en
    Juillet 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : informaticienne
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 81
    Points : 47
    Points
    47
    Par défaut Problème de création de clés étrangères
    Bonjour,
    Je rencontre un souci. J'ai des difficultés avec la création de clés étrangères. J'ai créé une bdd elevage et dans cette BDD, j'ai créé premièrement une table Animal contenant les colonnes suivantes : Espèce, Sexe, Date de naissance, Commentaires, Nom (les colonnes ne sont pas forcément dans cet ordre dans ma bdd). Et ensuite, j'ai créé une table Espece contenant les champs suivants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE Espece (
    id SMALLINT UNSIGNED AUTO_INCREMENT,
    nom_courant VARCHAR(40) NOT NULL,
    nom_latin VARCHAR(40) NOT NULL UNIQUE,
    description TEXT,
    PRIMARY KEY(id)
    )
    ENGINE=InnoDB;
    Puis j'ai voulu écrire la commande suivante, qui devait permettre de relier Animal et Espece (afin de faire correspondre à un animal son espèce):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -- Ajout d'une colonne espece_id
    ALTER TABLE Animal ADD COLUMN espece_id SMALLINT UNSIGNED; -- même
    type que la colonne id de Espece
    -- Remplissage de espece_id
    UPDATE Animal SET espece_id = 1 WHERE espece = 'chien';
    UPDATE Animal SET espece_id = 2 WHERE espece = 'chat';
    UPDATE Animal SET espece_id = 3 WHERE espece = 'tortue';
    UPDATE Animal SET espece_id = 4 WHERE espece = 'perroquet';
    -- Suppression de la colonne espece (supprimer cettte colonne qui ne servait plus à rien pour mes travaux)
    ALTER TABLE Animal DROP COLUMN espece;
    -- Ajout de la clé étrangère
    ALTER TABLE Animal
    ADD CONSTRAINT fk_espece_id FOREIGN KEY (espece_id) REFERENCES
    Espece(id);
    Mais la création d'un index multi-colonnes (nom,espece_id)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE Animal MODIFY espece_id SMALLINT UNSIGNED NOT NULL;
    CREATE UNIQUE INDEX ind_uni_nom_espece_id ON Animal (nom,
    espece_id);
    m'a renvoyé l'erreur suivante:
    Duplicate entry 'Anya_1' for key uni_ind_nom_espece_id, je sais que cela signifie que j'ai des doublons mais je ne comprends pas pourquoi, j'ai suivi à la lettre le tuto.
    J'ai vraiment besoin d'aide, merci pour vos réponses qui m'aideraient à débloquer la situation.
    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Jetez un coup d’œil à cet article pour identifier vos doublons : http://sqlpro.developpez.com/cours/doublons/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    Bonsoir,

    Que contient votre table Animal ?

    Avez-vous 2 animaux de la même espèce qui portent le même nom avant la création de votre index unique ?

Discussions similaires

  1. Erreur lors de la création de clés étrangères
    Par ninouee dans le forum Débuter
    Réponses: 10
    Dernier message: 29/09/2014, 16h19
  2. Réponses: 3
    Dernier message: 04/10/2010, 11h32
  3. Création de clés étrangères, erreur de syntaxe
    Par piotrr dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 23/01/2008, 09h02
  4. Erreur lors de la création de clés étrangères
    Par Neuromancien2 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/07/2007, 23h44
  5. Problème création clés étrangères
    Par sat478 dans le forum Débuter
    Réponses: 1
    Dernier message: 01/05/2006, 15h53

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