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

MySQL Discussion :

Ajout d'une clé étrangère


Sujet :

MySQL

  1. #1
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut Ajout d'une clé étrangère
    Bonjour à tous,

    Je ne comprends pas bien comment fonctionne les clés étrangères.

    J'ai une base de données représentant des biens immobiliers. Une table représente les sites, c'est-à-dire les immeubles (les biens), et s'appelle 'biens'. L'autre s'appelle 'locaux' et représente les locaux à louer (bureaux, locaux d'activités, entrepôts). Un site peut avoir plusieurs locaux. Mais un local doit forcément comporter une référence à un site (une adresse, un descriptif). Et si je supprime un bien, les locaux qu'il contient n'ont plus de raison d'être. Si la référence venait à changer, même chose : il faudrait que cela permette de changer automatiquement la référence placée sur la table 'locaux'. J'ai donc écrit la commande MySQL suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE locaux ADD CONSTRAINT fk_locaux_biens_id FOREIGN KEY (id_bien) REFERENCES biens(id) ON DELETE CASCADE ON UPDATE CASCADE
    J'ai alors une erreur : #1452 - Cannot add or update a child row: a foreign key constraint fails (`rubin-immo`.<result 2 when explaining filename '#sql-11e8_43'>, CONSTRAINT `fk_locaux_biens_id` FOREIGN KEY (`id_bien`) REFERENCES `biens` (`id`) ON DELETE CASCADE ON UPDATE CASCADE).

    J'ai beau relire, je ne comprends pas du tout ce que cela signifie.
    Alors, en essayant de créer la clé étrangère à partir de l'interface phpmyadmin, j'ai constaté que phpmyadmin n'acceptait les clés étrangères que pour les colonnes possédant un index. J'ai donc ajouté un index sur la colonne id_bien, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE INDEX index_locaux ON locaux (id_bien)
    Ce qui ne m'a pas renvoyé d'erreur. Je suppose donc que la commande a bien fonctionné. J'ai alors rempli le formulaire placé à Structure > Vue relationnelle. Mais j'ai toujours la même erreur.

    Pourriez-vous m'expliquer mon erreur ?
    Merci d'avance

  2. #2
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut
    Pardon,

    J'ai fini par trouver la réponse en regardant un peu mieux dans le forum (mais si, j'avais cherché, pourtant) : il existait un local qui faisait référence à un bien déjà supprimé de la table "biens". Cet enregistrement ne satisfait donc pas à la contrainte de clé primaire, il y a donc conflit, et Mysql ne peut pas créer la contrainte.

    Sujet résolu.

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

Discussions similaires

  1. Ajout d'une clé étrangère dans une table
    Par SteffieLili dans le forum QlikView
    Réponses: 11
    Dernier message: 25/03/2014, 15h54
  2. [MySQL] une erreur à l'ajout d'une clé étrangère
    Par Stuff dans le forum Requêtes
    Réponses: 4
    Dernier message: 28/09/2008, 12h47
  3. Réponses: 8
    Dernier message: 01/03/2008, 10h07
  4. Renommer un champ et ajouter une clé étrangère à une table
    Par maxlegrand dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/12/2007, 11h30
  5. problème pour l'ajout d'une clé étrangère
    Par ELKCHAOU dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/12/2005, 10h38

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