Tema: Tipos de FK
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/06/2010, 06:39
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Tipos de FK

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
  1.   CONSTRAINT_SCHEMA,
  2.   CONSTRAINT_NAME,
  3.   TABLE_SCHEMA,
  4.   TABLE_NAME,
  5.   CONSTRAINT_TYPE
  6. FROM information_schema.TABLE_CONSTRAINTS T
  7. 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
  1.   CONSTRAINT_SCHEMA,
  2.   CONSTRAINT_NAME,
  3.   TABLE_SCHEMA,
  4.   TABLE_NAME,
  5.   COLUMN_NAME,
  6.   ORDINAL_POSITION,
  7.   POSITION_IN_UNIQUE_CONSTRAINT,
  8.   REFERENCED_TABLE_SCHEMA,
  9.   REFERENCED_TABLE_NAME,
  10.   REFERENCED_COLUMN_NAME
  11. FROM information_schema.KEY_COLUMN_USAGE K
  12. WHERE REFERENCED_TABLE_NAME IS NOT NULL
  13. ORDER BY TABLE_NAME,
  14.   COLUMN_NAME,
  15.   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
Código MySQL:
Ver original 
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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)