MySQL : Lister toutes les clés étrangères (FOREIGN KEY) d’une base de données
La requête ci-dessous permet d’avoir un état des lieux de toutes les clés étrangères toutes tables confondues pour une base de données MySQL. Par défaut sous phpMyAdmin il n’est évident de retrouver cette information bien qu’il soit possible de lister les clés étrangères en utilisant la vue relationnelle au niveau d’une table. Notez que vous devez utiliser le moteur InnoDB pour pouvoir créer des clés étrangères sous MySQL.
La requête utilise le schéma d’information MySQL de la base de données afin d’en extraire les clés étrangères. Il vous suffit de remplacer ‘database_name’ par le nom de votre base de données dans la requête :
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE `table_schema` LIKE 'database_name' AND `constraint_type` = 'FOREIGN KEY';
Il peut être utile d’obtenir cette liste lorsque vous avez besoin de supprimer toutes les clés étrangères d’une base de données pour effectuer des changements de structures sur certaines tables.
Pour rappel, vous pouvez supprimer une clé étrangère en utilisant son identifiant interne via cette requête :
ALTER TABLE `table_name` DROP FOREIGN KEY `table_name_foreign_key_ibfk_1`;