51.13. pg_constraint#

51.13. pg_constraint

51.13. pg_constraint

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

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

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

Таблица 51.13. pg_constraint Столбцы

Тип столбца

Описание

oid oid

Идентификатор строки

conname name

Имя ограничения (не обязательно уникальное!)

connamespace oid (ссылается на pg_namespace.oid)

OID пространства имен, которое содержит это ограничение

contype char

c = проверочное ограничение, f = ограничение внешнего ключа, p = ограничение первичного ключа, u = ограничение уникальности, t = триггер ограничения, x = ограничение-исключение

condeferrable bool

Является ли ограничение отложенным?

condeferred bool

Является ли ограничение отложенным по умолчанию?

convalidated bool

Было ли ограничение проверено? В настоящее время может быть ложным только для внешних ключей и ограничений CHECK

conrelid oid (ссылается на pg_class.oid)

Таблица, на которой находится это ограничение; ноль, если это не ограничение таблицы

contypid oid (ссылается на pg_type.oid)

Домен, на котором находится это ограничение; ноль, если это не ограничение домена

conindid oid (ссылается на pg_class.oid)

Индекс, поддерживающий это ограничение, если это ограничение уникальности, первичный ключ, внешний ключ или ограничение-исключение; иначе ноль.

conparentid oid (ссылается на pg_constraint.oid)

Соответствующее ограничение родительской секционированной таблицы, если это ограничение на раздел; иначе ноль

confrelid oid (ссылается на pg_class.oid)

Если это внешний ключ, то ссылается на таблицу; иначе ноль

confupdtype char

Foreign key update action code: a = нет действия, r = ограничить, c = каскадное обновление, n = установить null, d = установить по умолчанию

confdeltype char

Foreign key deletion action code: a = нет действия, r = ограничить, c = каскадное удаление, n = установить null, d = установить по умолчанию

confmatchtype char

Тип сопоставления внешнего ключа: f = полное, p = частичное, s = простое

conislocal bool

Это ограничение определено локально для отношения. Обратите внимание, что ограничение может быть определено локально и одновременно унаследовано.

coninhcount int4

Количество непосредственных предков-наследников этого ограничения. Ограничение с ненулевым количеством предков не может быть удалено или переименовано.

connoinherit bool

Это ограничение определено локально для отношения. Оно является неунаследуемым ограничением.

conkey int2[] (ссылается на pg_attribute.attnum)

Если ограничение таблицы (включая внешние ключи, но не триггеры ограничений), список ограниченных столбцов

confkey int2[] (ссылается на pg_attribute.attnum)

Если это внешний ключ, список целевых столбцов

conpfeqop oid[] (ссылается на pg_operator.oid)

Если это внешний ключ, список операторов равенства для сравнения PK = FK

conppeqop oid[] (ссылается на pg_operator.oid)

Если внешний ключ, список операторов равенства для сравнения PK = PK

conffeqop oid[] (ссылается на pg_operator.oid)

Если внешний ключ, список операторов равенства для сравнения FK = FK

confdelsetcols int2[] (ссылается на pg_attribute.attnum)

Если внешний ключ имеет действие удаления SET NULL или SET DEFAULT, будут обновлены столбцы, на которые ссылаются. Если значение равно null, будут обновлены все столбцы, на которые ссылаются.

conexclop oid[] (ссылается на pg_operator.oid)

Если это ограничение исключения, перечислите операторы исключения для каждого столбца

conbin pg_node_tree

Если это проверочное ограничение, внутреннее представление выражения. (Рекомендуется использовать pg_get_constraintdef() для извлечения определения проверочные ограничения).


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

Примечание

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