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