微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取所有具有外键约束的列名

如何解决获取所有具有外键约束的列名

我正在使用Postgresql。我想编写一个查询,该查询返回所有具有外键约束的列名称,以及它们所引用的表的名称

解决方法

据我所知,information_schema视图没有为您提供列名,因此您必须使用目录:

SELECT c.conrelid::regclass AS source_table,a.attname AS column_name,k.n AS position,c.confrelid::regclass AS referenced_table
FROM pg_constraint AS c
   CROSS JOIN LATERAL unnest(c.conkey) WITH ORDINALITY AS k(attnum,n)
   JOIN pg_attribute AS a
      ON k.attnum = a.attnum AND c.conrelid = a.attrelid
WHERE c.contype = 'f'
ORDER BY c.conrelid::regclass::text,k.n;

要仅获取特定表的数据,请将以下内容添加到WHERE条件中:

AND c.conrelid = 'mytable'::regclass

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。