49.13. pg_constraint

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

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

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

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

ИмяТипСсылкиОписание
oidoid Идентификатор строки (скрытый атрибут; должен выбираться явно)
connamename Имя ограничения (не обязательно уникальное!)
connamespaceoidpg_namespace.oidOID пространства имён, содержащего это ограничение
contypechar c = ограничение-проверка (check), f = внешний ключ (foreign key), p = первичный ключ (primary key), u = ограничение уникальности (unique), t = триггер ограничения (trigger), x = ограничение-исключение (exclusion)
condeferrablebool Является ли ограничение откладываемым?
condeferredbool Является ли ограничение отложенным по умолчанию?
convalidatedbool Было ли ограничение проверено? В настоящее время значение false возможно только для внешних ключей и ограничений CHECK
conrelidoidpg_class.oidТаблица, для которой установлено это ограничение; 0, если это не ограничение таблицы
contypidoidpg_type.oidДомен, к которому относится это ограничение; 0, если это не ограничение домена
conindidoidpg_class.oidИндекс, поддерживающий это ограничение, если это ограничение уникальности, первичного или внешнего ключа, либо ограничение-исключение; в противном случае — 0
confrelidoidpg_class.oidЕсли это внешний ключ, таблица, на которую он ссылается; иначе 0
confupdtypechar Код действия при изменении внешнего ключа: a = нет действия, r = ограничить (restrict), c = каскадное действие (cascade), n = присвоить NULL, d = поведение по умолчанию
confdeltypechar Код действия при удалении внешнего ключа: a = нет действия, r = ограничить (restrict), c = каскадное действие (cascade), n = присвоить NULL, d = поведение по умолчанию
confmatchtypechar Тип сопоставления внешнего ключа: f = полное (full), p = частичное (partial), s = простое (simple)
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
conexclopoid[]pg_operator.oidДля ограничения-исключения — список операторов исключения по столбцам
conbinpg_node_tree Для ограничения-проверки — внутреннее представление выражения
consrctext Для ограничения-проверки — понятное человеку представление выражения

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

Примечание

Поле consrc не меняется при изменении задействованных в выражении объектов; например, в нём не отслеживается переименование столбцов. Поэтому лучше не полагаться на него, а воспользоваться функцией pg_get_constraintdef(), чтобы получить определение ограничения-проверки.

Примечание

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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy