PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 16.5 » Internes » Catalogues système » pg_constraint

53.13. pg_constraint #

Le catalogue pg_constraint stocke les vérifications, clés primaires, clés uniques, étrangères et d'exclusion des tables. (Les contraintes de colonnes ne sont pas traitées de manière particulière. Elles sont équivalentes à des contraintes de tables.) Les contraintes NOT NULL sont représentées dans le catalogue pg_attribute, pas ici.

Les triggers de contraintes définies par des utilisateurs (créés avec CREATE CONSTRAINT TRIGGER) ont aussi une entrée dans cette table.

Les contraintes de vérification de domaine sont également stockées dans ce catalogue.

Tableau 53.13. Colonnes de pg_constraint

Type

Description

oid oid

Identifiant de ligne

conname name

Nom de la contrainte (pas nécessairement unique !)

connamespace oid (référence pg_namespace.oid)

OID du namespace qui contient la contrainte.

contype char

c = contrainte de vérification, f = contrainte de clé étrangère, p = contrainte de clé primaire, u = contrainte d'unicité, t = contrainte trigger, x = contrainte d'exclusion

condeferrable bool

La contrainte peut-elle être retardée (deferable) ?

condeferred bool

La contrainte est-elle retardée par défaut ?

convalidated bool

La contrainte a-t-elle été validée ? actuellement, peut seulement valoir false pour les clés étrangères et les contraintes CHECK

conrelid oid (référence pg_class.oid)

Table à laquelle appartient la contrainte ; zéro si ce n'est pas une contrainte de table.

contypid oid (référence pg_type.oid)

Domaine auquel appartient la contrainte ; zéro si ce n'est pas une contrainte de domaine.

conindid oid (référence pg_class.oid)

L'index qui force cette contrainte (unique, clé primaire, clé étrangère, d'exclusion) ; sinon zéro

conparentid oid (référence pg_constraint.oid)

La contrainte correspondante dans la table partitionnée parent si c'est une contrainte dans une partition ; sinon zéro

confrelid oid (référence pg_class.oid)

Si c'est une clé étrangère, la table référencée ; sinon zéro

confupdtype char

Code de l'action de mise à jour de la clé étrangère : a = no action, r = restrict, c = cascade, n = set null, d = set default

confdeltype char

Code de l'action de suppression de clé étrangère : a = no action, r = restrict, c = cascade, n = set null, d = set default

confmatchtype char

Type de concordance de la clé étrangère : f = full, p = partial, s = simple

conislocal bool

Cette contrainte est définie localement dans la relation. Notez qu'une contrainte peut être définie localement et héritée simultanément

coninhcount int2

Le nombre d'ancêtres d'héritage directs que cette contraite possède. Une contrainte avec un nombre non nul d'ancêtres ne peut être ni supprimée ni renommée.

connoinherit bool

Cette contrainte est définie localement pour la relation. C'est une contrainte non héritable.

conkey int2[] (référence pg_attribute.attnum)

S'il s'agit d'une contrainte de table (incluant les clés étrangères mais pas les triggers de contraintes), liste des colonnes contraintes

confkey int2[] (référence pg_attribute.attnum)

S'il s'agit d'une clé étrangère, liste des colonnes référencées

conpfeqop oid[] (référence pg_operator.oid)

S'il s'agit d'une clé étrangère, liste des opérateurs d'égalité pour les comparaisons clé primaire/clé étrangère

conppeqop oid[] (référence pg_operator.oid)

S'il s'agit d'une clé étrangère, liste des opérateurs d'égalité pour les comparaisons clé primaire/clé primaire

conffeqop oid[] (référence pg_operator.oid)

S'il s'agit d'une clé étrangère, liste des opérateurs d'égalité pour les comparaisons clé étrangère/clé étrangère

confdelsetcols int2[] (references pg_attribute.attnum)

S'il s'agit d'une clé étrangère avec une action SET NULL ou SET DEFAULT pour une suppression de ligne, liste des colonnes qui seront mises à jour. Si null, toutes les colonnes référençantes seront mises à jour.

conexclop oid[] (référence pg_operator.oid)

Si une contrainte d'exclusion, liste les opérateurs d'exclusion par colonne

conbin pg_node_tree

Si c'est une contrainte CHECK, représentation interne de l'expression. (Il est recommandé d'utiliser pg_get_constraintdef() pour extraire la définition d'une contrainte CHECK.)


Dans le cas d'une contrainte d'exclusion, conkey est seulement utile pour les éléments contraints qui sont de simples références de colonnes. Dans les autres cas, un zéro apparaît dans conkey et l'index associé doit être consulté pour découvrir l'expression contrainte. (du coup, conkey a le même contenu que pg_index.indkey pour l'index.)

Note

pg_class.relchecks doit accepter le même nombre de contraintes de vérification pour chaque relation.