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