Maison > base de données > tutoriel mysql > Pourquoi ne puis-je pas supprimer un index utilisé dans une contrainte de clé étrangère ?

Pourquoi ne puis-je pas supprimer un index utilisé dans une contrainte de clé étrangère ?

Susan Sarandon
Libérer: 2024-11-01 06:51:30
original
279 Les gens l'ont consulté

Why Can't I Drop an Index Used in a Foreign Key Constraint?

Impossible de supprimer l'index utilisé dans une contrainte de clé étrangère

Lorsque vous tentez de modifier une base de données en ajoutant une nouvelle colonne et en mettant à jour un index UNIQUE vers Si vous incluez cette colonne, les utilisateurs peuvent rencontrer l'erreur « MySQL ne peut pas supprimer l'index nécessaire dans une contrainte de clé étrangère ». Cela se produit lorsque l'index supprimé est référencé par une clé étrangère dans une autre table.

Comprendre le problème

MySQL crée automatiquement des index sur les tables qui ont des clés étrangères. Ceci est fait pour garantir l’intégrité référentielle et une récupération efficace des données. Lorsqu'une clé étrangère est définie, MySQL crée un index sur la ou les colonnes de la table de référencement qui correspondent à la ou aux colonnes de la table référencée. La suppression de l'index viole l'intégrité de la relation de clé étrangère.

Résolution du problème

Pour résoudre ce problème, il est nécessaire de supprimer la contrainte de clé étrangère qui fait référence à l'index. indice. Cela peut être fait en utilisant la syntaxe suivante :

ALTER TABLE [table_name] DROP FOREIGN KEY [foreign_key_name];
Copier après la connexion

Une fois la contrainte de clé étrangère supprimée, l'index peut être supprimé sans erreur.

Exemple :

Considérons l'exemple suivant :

CREATE TABLE mytable (
ID int(11) NOT NULL AUTO_INCREMENT,
AID tinyint(5) NOT NULL,
BID tinyint(5) NOT NULL,
CID tinyint(5) NOT NULL,
PRIMARY KEY (ID),
UNIQUE INDEX AID (AID, BID, CID),
FOREIGN KEY (AID) REFERENCES mytable_a (ID) ON DELETE CASCADE,
FOREIGN KEY (BID) REFERENCES mytable_b (ID) ON DELETE CASCADE,
FOREIGN KEY (CID) REFERENCES mytable_c (ID) ON DELETE CASCADE
);
Copier après la connexion

Pour supprimer UNIQUE INDEX AID, la contrainte de clé étrangère mytable_ibfk_1 doit d'abord être supprimée à l'aide de l'instruction suivante :

ALTER TABLE mytable DROP FOREIGN KEY mytable_ibfk_1;
Copier après la connexion

Après la contrainte de clé étrangère a été supprimée, l'index peut être supprimé avec succès.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal