Как получить список всех ограничений, их таблиц и столбцов в postgres? - PullRequest
0 голосов
/ 31 декабря 2018

Я хочу получить список всех ограничений, их таблиц и столбцов, что-то вроде

constraint                    | table | columns
------------------------------|-------|---------------
table1_colum1_colum2_key       table1   {colum1, colum2}

Как это можно сделать?

1 Ответ

0 голосов
/ 31 декабря 2018

Ограничения могут быть запрошены через pg_constraint.Таблицы включены в pg_class, а столбцы в pg_attributes.Схемы в pg_namespace.

Вам может помочь что-то вроде следующего.

SELECT con.conname "constraint",
       concat(nsp.nspname, '.', rel.relname) "table",
       (SELECT array_agg(att.attname)
               FROM pg_attribute att
                    INNER JOIN unnest(con.conkey) unnest(conkey)
                               ON unnest.conkey = att.attnum
               WHERE att.attrelid = con.conrelid) "columns"
       FROM pg_constraint con
            INNER JOIN pg_class rel
                       ON rel.oid = con.conrelid
            INNER JOIN pg_namespace nsp
                       ON nsp.oid = rel.relnamespace;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...