Maison >base de données >tutoriel mysql >Une clé primaire peut-elle également servir de clé étrangère et comment corriger l'erreur MySQL 1005 ?
Erreur de clé étrangère MySQL 1005 errno 150 : résolution de la clé primaire en tant que problème de clé étrangère
Les contraintes de clé étrangère MySQL renforcent l'intégrité des données en référençant les champs dans d'autres tableaux. Cependant, lorsque vous utilisez une clé primaire comme clé étrangère, vous pouvez rencontrer l'erreur 1005. Cette erreur se produit lorsque la table référencée ne dispose pas d'un index utilisable pour les colonnes référencées.
Une clé primaire peut-elle être une clé étrangère Clé ?
Oui, une clé primaire peut aussi être une clé étrangère. Il s'agit d'une pratique courante dans la conception de bases de données, car elle garantit que la table de référencement contient uniquement des données valides et maintient l'intégrité référentielle des relations.
Résolution de l'erreur 1005
Pour résoudre l'erreur 1005, vous devez créer un index sur les colonnes référencées dans la table référencée. Cet index permet à MySQL de retrouver efficacement les enregistrements référencés. Voici comment vous pouvez résoudre le problème dans votre cas spécifique :
ALTER TABLE Immobile ADD PRIMARY KEY (`ComuneImmobile`, `ViaImmobile`, `CivicoImmobile`, `InternoImmobile`);
En ajoutant la clé primaire, les colonnes seront automatiquement indexées. Cela garantit que les clés étrangères des autres tables (Condoni) peuvent référencer les enregistrements corrects dans la table Immobile.
Solution alternative
Si vous créez un index sur la table principale key n'est pas réalisable, vous pouvez utiliser une clé étrangère composite à la place. Cela signifie utiliser plusieurs colonnes de la clé primaire comme références de clé étrangère. Dans ce cas, vous créeriez les clés étrangères suivantes :
ALTER TABLE Condoni ADD FOREIGN KEY (`ComuneImmobile`, `ViaImmobile`) REFERENCES Immobile (`ComuneImmobile`, `ViaImmobile`);
Cette clé étrangère composite renforcerait l'intégrité référentielle sans avoir besoin d'un index sur la clé primaire.
En les implémentant solutions, vous pouvez établir les relations souhaitées entre vos tables de base de données et éviter l'erreur 1005 lors de l'utilisation d'une clé primaire comme référence de clé étrangère.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!