我们可以打印通过 psql 中的外键引用到单个表的所有表名吗?

  • 本文关键字:单个表 引用 打印 我们 psql sql psql
  • 更新时间 :
  • 英文 :


我们可以打印所有通过 psql 中的外键引用到单个表的表名吗

如下所述: https://stackoverflow.com/a/1154078/6932732

SELECT conname,
pg_catalog.pg_get_constraintdef(r.oid, true) as condef
FROM pg_catalog.pg_constraint r
WHERE r.conrelid = 'Table_Name'::regclass AND r.contype = 'f' ORDER BY 1

通过将Table_Name替换为要检查的表的名称,您将获得外键和关联的引用。

如果要打印引用表的实际名称,则需要更复杂的查询,如下所示:https://stackoverflow.com/a/1152321/6932732

SELECT
tc.table_schema, 
tc.constraint_name, 
tc.table_name, 
kcu.column_name, 
ccu.table_schema AS foreign_table_schema,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name 
FROM 
information_schema.table_constraints AS tc 
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
AND tc.table_schema = kcu.table_schema
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
AND ccu.table_schema = tc.table_schema
WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name='Table_Name';

通过将Table_Name替换为要检查的表的名称,您将获得外键和关联的引用,而实际的表名将位于foreign_table_name列中。

最新更新