Si, pero no consultando la tabla que contiene, sino una tabla en especial que pertenece al sistema.
Esto te devuelve la lista de bases y tablas que tienen FK declarada:
Código MySQL:
Ver original CONSTRAINT_SCHEMA,
CONSTRAINT_NAME,
TABLE_SCHEMA,
TABLE_NAME,
CONSTRAINT_TYPE
FROM information_schema.TABLE_CONSTRAINTS T
WHERE CONSTRAINT_TYPE
= 'FOREIGN KEY';
Pero saber qué tablas tienen FK en su estructura y cuál es el nombre de la constraint que la determina, no implica saber de qué forma está construida ni a qué tabla hace referencia.
Esta otra te devuelve toda la información de cada una de ellas, incluyendo el orden en que los campos se definieron para la FK:
Código MySQL:
Ver original CONSTRAINT_SCHEMA,
CONSTRAINT_NAME,
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
ORDINAL_POSITION,
POSITION_IN_UNIQUE_CONSTRAINT,
REFERENCED_TABLE_SCHEMA,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE K
COLUMN_NAME,
ORDINAL_POSITION;
Atención: TABLE_SCHEMA contiene el nombre de la base de datos, pero ese campo es sensible a mayúsculas/minúsculas, por lo que debes prestar atención a poner el nombre correctamente, o no podrá encontrar la base.
Existe otra posibilidad y es usar
Esto te devolverá una tabla de dos campos, el segundo de los cuales contiene la sentencia que
crea la tabla, y en la cual podrás encontrar la referencia de la FK. El problema es que esa informacion la deberás analizar manualmente, en lugar de recibirla como tabla como en las consultas anteriores.