Tengo una tabla cuya clave principal se hace referencia en varias otras tablas como una clave externa. Por ejemplo:
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`)
)
Ahora, no sé cuántas tablas hay en la base de datos que contienen claves foráneas en X como las tablas Y y Z. ¿Hay alguna consulta SQL que pueda usar para devolver:
- Una lista de tablas que tienen claves foráneas en X
- Y cuáles de esas tablas realmente tienen valores en la clave externa
mysql
foreign-keys
Mel
fuente
fuente
Manual de referencia de MySQL 5.5: "Restricciones de InnoDB y FOREIGN KEY"
fuente
Esta solución no solo mostrará todas las relaciones, sino también el nombre de restricción, que se requiere en algunos casos (por ejemplo, restricción de caída):
Si desea verificar las tablas en una base de datos específica, agregue lo siguiente:
fuente
Puede encontrar toda la información relacionada con el esquema en el nombre sabio
information_schema
tabla .Es posible que desee consultar la tabla
REFERENTIAL_CONSTRAINTS
yKEY_COLUMN_USAGE
. El primero le dice a qué tablas hacen referencia otros; este último le dirá cómo se relacionan sus campos.fuente
Listado de todas las claves foráneas en una base de datos, incluida la descripción
restringiendo a una columna específica en una tabla
fuente
Escribí un pequeño bash onliner que puedes escribir en un script para obtener una salida amigable:
mysql_references_to:
Entonces la ejecución:
mysql_references_to transaccion
(donde transaccion es un nombre de tabla aleatorio) da una salida como esta:fuente
Más fácil:
1. Abra phpMyAdmin
2. A la izquierda, haga clic en el nombre de la base de datos
3. En la esquina superior derecha, busque la pestaña "Diseñador"
Todas las restricciones se mostrarán allí.
fuente