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.