2010-03-18 18 views
7

¿Existe alguna manera fácil de consultar una tabla por sus restricciones (foreignkeys, específicamente) como show create table, pero solo para las restricciones?Mysql show create constraint?

gracias,

pvgoddijn

Respuesta

10

para mostrar sólo las restricciones de clave externa se puede comprobar la CONSTRAINT_TYPE en information_schema.table_constraints y obtener las columnas afectadas en information_schema.key_column_usage a través de una unión

SELECT b.table_name, b.column_name, b.constraint_name, 
     b.referenced_table_name, b.referenced_column_name 
FROM information_schema.table_constraints a 
JOIN information_schema.key_column_usage b 
ON a.table_schema = b.table_schema AND a.constraint_name = b.constraint_name 
WHERE a.table_schema=database() AND a.constraint_type='FOREIGN KEY' 
ORDER BY b.table_name, b.constraint_name; 
+0

gracias esto era exactamente lo que estaba buscando. – pvgoddijn

+0

+1 BONITA CONSULTA. FTW ... – KeatsKelleher

-3
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name'; 

Las restricciones de clave externa se enumeran en la columna Comentario de la salida.

+0

Este no funciona en todos los tipos de tabla. –

1
select * from 
information_schema.KEY_COLUMN_USAGE 
where table_schema = <db_name> 
and table_name = <table_name>; 
Cuestiones relacionadas