给定表名,如何从 plpgsql 函数中提取主键列及其数据类型的列表?
原文由 jsight 发布,翻译遵循 CC BY-SA 4.0 许可协议
给定表名,如何从 plpgsql 函数中提取主键列及其数据类型的列表?
原文由 jsight 发布,翻译遵循 CC BY-SA 4.0 许可协议
SELECT a.attname AS name, format_type(a.atttypid, a.atttypmod) AS type
FROM
pg_class AS c
JOIN pg_index AS i ON c.oid = i.indrelid AND i.indisprimary
JOIN pg_attribute AS a ON c.oid = a.attrelid AND a.attnum = ANY(i.indkey)
WHERE c.oid = 'example'::regclass
输出:
name | type
------+--------
id | bigint
原文由 Paul Draper 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答2.4k 阅读✓ 已解决
3 回答2.3k 阅读
1 回答2.3k 阅读✓ 已解决
2 回答953 阅读
上面的查询非常糟糕,因为它真的很慢。
我会推荐这个官方版本:
http://wiki.postgresql.org/wiki/Retrieve_primary_key_columns
如果需要架构,则查询如下