我有一个表用户,org_id
其中有一个字段,称为表的外键organisation
,主键字段organisation_id
。知道表名(用户)和字段名(users.org_id
),有没有可以告诉我引用的名称和字段的查询org_id
?
我发现了一个与此类似的Stackoverflow 帖子,其中提供了一个查询来确定引用的表名,但我还需要知道所引用的字段名称:
SELECT c.confrelid::regclass::text AS referenced_table
,c.conname AS fk_name
,pg_get_constraintdef(c.oid) AS fk_definition
FROM pg_attribute a
JOIN pg_constraint c ON (c.conrelid, c.conkey[1]) = (a.attrelid, a.attnum)
WHERE a.attrelid = '"Schema"."Users"'::regclass -- table name
AND a.attname = 'org_id' -- column name
AND c.contype = 'f'
ORDER BY conrelid::regclass::text, contype DESC;
所以上面的查询将返回表的名称 ( organisation
)、fk 名称和 fk 定义。有没有办法获得被引用字段的名称?我知道我可能可以执行另一个查询来确定给定表的 pk 的名称,但我想避免为此执行多个查询。