gpt4 book ai didi

sql - 如何在 Postgre 中返回主列名?

转载 作者:行者123 更新时间:2023-11-29 13:40:56 26 4
gpt4 key购买 nike

我正在为 KnexJS 开发一个包装器,为了使错误更具描述性,我希望能够获取表的主列的名称。我看过,但找不到任何答案。我不擅长 SQL,所以如果它是高级的,请尝试对其进行分解。

最佳答案

要找出给定表上 PK 的 PK 名称和列名称:

SELECT t.relname AS table_name
, i.relname AS index_name
, ia.attname AS column_name
FROM pg_class t
JOIN pg_index ix
ON ix.indrelid = t.oid
AND ix.indisprimary = 't'
JOIN pg_class i
ON i.oid = ix.indexrelid
JOIN pg_attribute ia
ON ia.attrelid = t.oid
AND ia.attnum = ANY(ix.indkey)
WHERE t.relkind = 'r' -- table
AND t.relname = 'your_table_name'

请注意,对于复合 PK(多列),它将在单独的行中列出。如果您希望每个表一行,只需 GROUP BY t.relname, i.relname 并选择 array_to_string(array_agg(ia.attname), ', ') 作为列

关于sql - 如何在 Postgre 中返回主列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55505777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com