J'ai une table dont la clé primaire est référencée dans plusieurs autres tables comme clé étrangère. Par exemple:
CREATE TABLE `X` (
`X_id` int NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`X_id`)
)
CREATE TABLE `Y` (
`Y_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Y_id`),
CONSTRAINT `Y_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)
CREATE TABLE `Z` (
`Z_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Z_id`),
CONSTRAINT `Z_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)
Maintenant, je ne sais pas combien de tables il y a dans la base de données qui contiennent des clés étrangères dans X comme les tables Y et Z. Y a-t-il une requête SQL que je peux utiliser pour retourner:
- Une liste des tables qui ont des clés étrangères dans X
- ET lesquelles de ces tables ont réellement des valeurs dans la clé étrangère
Manuel de référence MySQL 5.5: "Contraintes InnoDB et FOREIGN KEY"
la source
Cette solution affichera non seulement toutes les relations mais aussi le nom de la contrainte, ce qui est nécessaire dans certains cas (par exemple, contrainte de suppression):
Si vous souhaitez vérifier les tables dans une base de données spécifique, ajoutez ce qui suit:
la source
Vous pouvez trouver toutes les informations liées au schéma dans le
information_schema
tableau .Vous voudrez peut-être vérifier le tableau
REFERENTIAL_CONSTRAINTS
etKEY_COLUMN_USAGE
. Le premier vous indique quelles tables sont référencées par d'autres; ce dernier vous dira comment leurs champs sont liés.la source
Liste de toutes les clés étrangères dans une base de données, y compris la description
restriction à une colonne spécifique dans une table table
la source
J'ai écrit un petit bash onliner que vous pouvez écrire dans un script pour obtenir une sortie conviviale:
mysql_references_to:
Ainsi, l'exécution:
mysql_references_to transaccion
(où transaccion est un nom de table aléatoire) donne une sortie comme celle-ci:la source
Le plus simple:
1. Ouvrez phpMyAdmin
2. Dans le clic gauche sur le nom de la base de données
3. Dans le coin supérieur droit, trouvez l'onglet "Designer"
Toutes les contraintes y seront affichées.
la source