我使用的是PostgreSQL,我试图列出所有表中有特定列作为外键/引用的表.这能做到吗?我确信这些信息存储在information_schema
的某个地方,但我不知道如何开始查询它.
我使用的是PostgreSQL,我试图列出所有表中有特定列作为外键/引用的表.这能做到吗?我确信这些信息存储在information_schema
的某个地方,但我不知道如何开始查询它.
SELECT
r.table_name
FROM information_schema.constraint_column_usage u
INNER 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_name
INNER 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_name
WHERE
u.column_name = 'id' AND
u.table_catalog = 'db_name' AND
u.table_schema = 'public' AND
u.table_name = 'table_a'
它使用完整的catalog/schema/name三元组从所有3个信息模式视图中标识db表.你可以根据需要放下一两个.
该查询列出了对表"d"中的列"a"具有外键约束的所有表