Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Tipos de FK

Estas en el tema de Tipos de FK en el foro de Mysql en Foros del Web. Hola, Existe alguna manera de saber el tipo de FK de una tabla hacia otra. Esto mediante una consulta. Si es de 1:n o 1:1 ...
  #1 (permalink)  
Antiguo 26/06/2010, 01:31
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 3 meses
Puntos: 20
Tipos de FK

Hola,

Existe alguna manera de saber el tipo de FK de una tabla hacia otra. Esto mediante una consulta.

Si es de 1:n o 1:1

Saludos!
__________________
Pero el no contaba con una cosa, mi peligroso desinteres por la vida humana
  #2 (permalink)  
Antiguo 26/06/2010, 06:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
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)

Etiquetas: tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:49.