Descobrindo todas as colunas que fazem referência à outra no PostgreSQL

Como descobrir qual coluna de certa tabela é referenciado por outras de outras tabelas?

Em outras palavras, quais colunas de uma tabela tem FOREIGN KEYS/REFERENCES em outras?

Se você está procurando isso, provavelmente terá interesse neste post sobre o CASCADE. O CASCADE apaga ou atualiza todas as colunas que são FOREIGN KEY automaticamente.

Use a consulta abaixo e descubra!
Basta alterar o 'public', 'usuarios' e 'id' pelos valores desejados:

WITH params AS (	SELECT 	'public' AS schema_name,	'usuarios' AS table_name,	'id' AS column_name)SELECT -- CONSTRAINT datar.constraint_schema, r.constraint_name, -- FOREIGN KEY data (the column that references another one)r.table_schema fk_schema, r.table_name fk_table, r.column_name fk_column, r.ordinal_position fk_ordinal_position,-- REFERENCES data (the column which is referenced)params.schema_name ref_schema, params.table_name ref_table, params.column_name ref_columnFROM information_schema.constraint_column_usage uINNER JOIN information_schema.referential_constraints fk    ON u.constraint_catalog = fk.unique_constraint_catalog    AND u.constraint_schema = fk.unique_constraint_schema    AND u.constraint_name = fk.unique_constraint_nameINNER JOIN information_schema.key_column_usage r    ON r.constraint_catalog = fk.constraint_catalog    AND r.constraint_schema = fk.constraint_schema    AND r.constraint_name = fk.constraint_nameINNER JOIN params 	ON TRUE    AND u.table_schema IN (params.schema_name)    AND u.table_name IN (params.table_name)    AND u.column_name IN (params.column_name);

Atenção, essa consulta só funciona para versões mais modernas do PostgreSQL. Isso porque versões mais antigas não têm constraints de nome único.

Referências

Discussão no Stack Overflow
https://stackoverflow.com/questions/5347050/postgresql-sql-script-to-get-a-list-of-all-tables-that-has-a-particular-column

You should also read:

PostgreSQL

# Instalando o wget para fazer download da chave do repositório # Instalando o wget, capaz de fazer downloads de documentos via HTTP…