En MySQL, ¿cómo obtengo una lista de todas las restricciones de clave externa que apuntan a una tabla en particular? una columna en particular? Esto es lo mismo que esta pregunta de Oracle , pero para MySQL.
mysql
foreign-keys
innodb
Christian Oudard
fuente
fuente
where REFERENCED_TABLE_SCHEMA = 'mydatabase' and REFERENCED_TABLE_NAME = 'mytable'
EDITAR: Como se señaló en los comentarios, esta no es la respuesta correcta a la pregunta de los OP, pero es útil conocer este comando. Esta pregunta apareció en Google para lo que estaba buscando, y pensé que dejaría esta respuesta para que los demás la encuentren.
Encontré esta respuesta aquí: MySQL: mostrar restricciones en el comando de tablas
Necesitaba de esta manera porque quería ver cómo funcionaba el FK, en lugar de solo ver si existía o no.
fuente
<yourtable>
, no todas las restricciones que apuntan<yourtable>
.display foreign keys mysql
en google, puede ser por eso;)Si utiliza InnoDB y FK definidos, puede consultar la base de datos information_schema, por ejemplo:
fuente
Publicar en una respuesta anterior para agregar información útil.
Tuve un problema similar, pero también quería ver CONSTRAINT_TYPE junto con la tabla REFERENCIADA y los nombres de columna. Entonces,
Para ver todos los FK en su tabla:
Para ver todas las tablas y FK en su esquema:
Para ver todos los FK en su base de datos:
¡Recuerda!
Esto está utilizando el motor de almacenamiento InnoDB. Si parece que no puede mostrar ninguna clave foránea después de agregarla, probablemente sea porque sus tablas están usando MyISAM.
Verificar:
Para solucionarlo, use esto:
fuente
Como alternativa a la respuesta de Node, si usa InnoDB y define FK, puede consultar la base de datos information_schema, por ejemplo:
para claves foráneas de <table>, o
para claves foráneas para <table>
También puede obtener UPDATE_RULE y DELETE_RULE si lo desea.
fuente
Esta solución no solo mostrará todas las relaciones, sino también el nombre de restricción, que se requiere en algunos casos (p. Ej., Caída de contraint):
Si desea verificar las tablas en una base de datos específica, al final de la consulta agregue el nombre del esquema:
Del mismo modo, para un nombre de columna específico, agregue
al final de la consulta.
Inspirado en esta publicación aquí
fuente
Usar REFERENCED_TABLE_NAME no siempre funciona y puede ser un valor NULL. La siguiente consulta puede funcionar en su lugar:
fuente
Una forma rápida de enumerar sus FK (referencias de clave externa) utilizando el
Esta consulta asume que las restricciones y todas las tablas referenciadas y de referencia están en el mismo esquema.
Agrega tu propio comentario.
Fuente: el manual oficial de mysql.
fuente
La solución que se me ocurrió es frágil; se basa en la convención de nomenclatura de django para claves externas.
Entonces, en el caparazón,
fuente
Para buscar todas las tablas que contienen una clave foránea particular , como
employee_id
fuente
Si también desea obtener el nombre de la columna de clave externa:
fuente