pg_constraint#

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

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

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

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

Столбец

Тип данных

Описание

oid

oid

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

conname

name

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

connamespace

oid (ссылки pg_namespace.oid)

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

contype

char

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

конферируемый

bool

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

condeferred

bool

Откладывается ли ограничение по умолчанию?

convalidated

bool

Было ли ограничение проверено? В настоящее время может иметь значение false только для внешних ключей и ограничений 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

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

confdeltype

char

Код действия по удалению внешнего ключа: 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 необходимо согласиться с количеством записей контрольных ограничений, найденных в этой таблице для каждого отношения