Найти ссылочные поля ограничения внешнего ключа
У меня есть таблица Users с полем под названием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
), имя ФК и определение ФК. Есть ли способ также получить имя поля, на которое ссылаются? Я знаю, что, возможно, мог бы выполнить другой запрос, чтобы определить имя pk для данной таблицы, но я хотел бы избежать выполнения нескольких запросов для этого.