Como encontrar as foreign keys de uma tabela – Mysql

Posted on : by : admin

Pessoal,

Criei um procedimento para banco de dados MySql onde é possível encontrar as tabelas vinculadas por meio das constraints foreign keys.

Em resumo o procedimento encontra as tabelas vinculada à tabela que você desejar encontrar, os resultados são:

parâmetros de entrada; string:base = <schema> , string:tabela = tabela_sera_consultada.

resultado:

TABLE_SCHEMA => Schema

tabela_atual => tabela informada no parâmetro de entrada

coluna_atual => campo vinculado na foreign key

tabela_alvo => tabela que está vinculada à tabela consultada

coluna_alvo => campo vinculado na foreign key da tabela alvo.

 

Procedimento:

/*
Autor: Carlos Eduardo
Data:  07/03/2012
*/

DROP PROCEDURE IF EXISTS `procdependencias`;
CREATE PROCEDURE `procdependencias`(base varchar(30), tabela varchar(50))
BEGIN
SELECT DISTINCT TABLE_SCHEMA,
REFERENCED_TABLE_NAME AS tabela_atual,
REFERENCED_COLUMN_NAME AS coluna_atual,
TABLE_NAME AS tabela_alvo,
COLUMN_NAME AS coluna_alvo
FROM information_schema.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = COALESCE(tabela, REFERENCED_TABLE_NAME)
AND TABLE_SCHEMA = COALESCE(base, TABLE_SCHEMA)
ORDER BY tabela_alvo;
END;

 

Exemplo para execução:

call procdependencias(‘schema_banco’, ‘tb_funcionario’);

Resultado:

schema_banco  tb_funcionario  cod_funcionario  tb_endereco            cod_funcionario
schema_banco  tb_funcionario  cod_funcionario  tb_telefone              cod_funcionario
schema_banco  tb_funcionario  cod_dependente   tb_dependente      cod_depend

 

Até a próxima.