Modelo ER

Utilizarei o Modelo ER (Entidade Relacionamento) ao lado para apresentar um problema encontrado no dia de hoje, mas nada que umas boas lidas o manual do PostgreSQL para encontrar uma solução para meu problema.
O modelo ao lado é algo resumido que estarei utilizando como exemplo.
Bom o que era o problema?

Precisava encontrar quais entidades possuíam referencia a entidade “usuario”, a consulta deveria retornar juntamente a FOREIGN KEY.

A forma que encontrei para estar resolvendo este problema foi ir consultar as information_schema (esquema de informações).

constraint_table_usage: identifica todas as tabelas do banco de dados;

key_column_usage: identifica todas as colunas do banco de dados;

table_constraints: contém todas as restrições pertencentes às tabelas que pertencem;

Segue a instrução SQL executada para obter os resultados necessários:

SELECT
    kcu.column_name AS nome_coluna,
    kcu.TABLE_NAME AS nome_tabela  
FROM
    information_schema.constraint_table_usage AS ctu
JOIN
    information_schema.key_column_usage AS kcu
ON
    ctu.constraint_name = kcu.constraint_name
JOIN
    information_schema.table_constraints AS tc
ON
    tc.constraint_name = ctu.constraint_name
WHERE
    ctu.TABLE_NAME = 'usuario'
AND
    tc.constraint_type = 'FOREIGN KEY';

Resultado:

    nome_coluna, nome_tabela
1 - id_usuario , endereco
2 - id_usuario , telefone

Leave a Reply

*

Current month ye@r day *