Перейти к основному содержимому

pg_constraint

В каталоге pg_constraint хранятся ограничения проверки, первичного ключа, уникальности, внешнего ключа и исключения для таблиц. (Ограничения столбцов не рассматриваются особым образом. Каждое ограничение столбца эквивалентно некоторому ограничению таблицы.) Ограничения not-null представлены в каталоге pg_attribute, а не здесь.

Определяемые пользователем триггеры ограничений (созданные с помощью CREATE CONSTRAINT TRIGGER) также приводят к появлению записи в этой таблице.

Здесь же хранятся контрольные ограничения на домены.

Таблица 53.13 Столбцы pg_constraint

СтолбецТип данныхОписание
oidoidИдентификатор строки
connamenameИмя ограничения (не обязательно уникальное!)
connamespaceoid (ссылки pg_namespace.oid)OID пространства имен, содержащего данное ограничение.
contypecharc = ограничение проверки, f = ограничение внешнего ключа, p = ограничение первичного ключа, u = уникальное ограничение, t = триггер ограничения, x = ограничение исключения
конферируемыйboolЯвляется ли ограничение откладываемым?
condeferredboolОткладывается ли ограничение по умолчанию?
convalidatedboolБыло ли ограничение проверено? В настоящее время может иметь значение false только для внешних ключей и ограничений CHECK
conrelidoid (ссылается на pg_class.oid)Таблица, на которую наложено данное ограничение; ноль, если ограничение не является таблицей
contypidoid (ссылается на pg_type.oid)Домен, на котором находится данное ограничение; ноль, если ограничение не является доменом
conindidoid (ссылается на pg_class.oid)Индекс, поддерживающий это ограничение, если это уникальный, первичный ключ, внешний ключ или исключающее ограничение; иначе ноль
conparentidoid (ссылается на pg_constraint.oid)Соответствующее ограничение родительской таблицы с разбиением, если это ограничение на разбиение; иначе ноль
confrelidoid (ссылается на pg_class.oid)Если внешний ключ, то ссылающаяся таблица; иначе ноль
confupdtypecharКод действия обновления внешнего ключа: a = нет действия, r = ограничить, c = каскад, n = установить null, d = установить по умолчанию
confdeltypecharКод действия по удалению внешнего ключа: a = нет действия, r = ограничить, c = каскад, n = установить null, d = установить по умолчанию
confmatchtypecharТип соответствия внешнего ключа: f = полный, p = частичный, s = простой
conislocalboolЭто ограничение определяется локально для отношения. Обратите внимание, что ограничение может быть локально определено и унаследовано одновременно.
coninhcountint4Количество предков этого ограничения с прямым наследованием. Ограничение с нецелым числом предков не может быть отменено или переименовано.
connoinheritboolЭто ограничение определяется локально для отношения. Это ненаследуемое ограничение.
conkeyint2[] (ссылается на pg_attribute.attnum)Если ограничение таблицы (включая внешние ключи, но не триггеры ограничений), список столбцов, на которые наложено ограничение
confkeyint2[](ссылается на pg_attribute.attnum) Если внешний ключ, то список ссылающихся столбцов
conpfeqopoid[](ссылается на pg_operator.oid) Если ключ внешний, то список операторов равенства для сравнений PK = FK.
conppeqopoid[](ссылается на pg_operator).oid) Если ключ внешний, то список операторов равенства для сравнений PK = PK
conffeqopoid[](ссылается на pg_operator).oid) Если ключ внешний, то список операторов равенства для сравнений FK = FK
confdelsetcolsint2[](ссылается на pg_attribute.attnum) Если внешний ключ имеет действие удаления SET NULL или SET DEFAULT, указываются столбцы, которые будут обновлены. Если null, все ссылающиеся столбцы будут обновлены.
conexclopoid[](ссылается на pg_operator.oid) Если ограничение исключения, то список операторов исключения для каждого столбца.
conbinpg_node_treeЕсли это контрольное ограничение, то внутреннее представление выражения. (Рекомендуется использовать pg_get_constraintdef() для извлечения определения контрольного ограничения).

В случае ограничения исключения conkey полезен только для элементов ограничения, которые являются простыми ссылками на столбцы. В остальных случаях в conkey появляется ноль, и для обнаружения выражения, на которое наложено ограничение, необходимо обратиться к связанному с ним индексу. (Таким образом, conkey имеет то же содержимое, что и pg_index.indkey для индекса).

Примечание

pg_class.relchecks необходимо согласиться с количеством записей контрольных ограничений, найденных в этой таблице для каждого отношения