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

51.14. 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 51.14. Colonnes de pg_constraint

NomTypeRéférencesDescription
oidoid Identifiant de ligne (attribut caché ; doit être sélectionné explicitement)
connamename Nom de la contrainte (pas nécessairement unique !)
connamespaceoidpg_namespace.oid OID du namespace qui contient la contrainte.
contypechar  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
condeferrablebool La contrainte peut-elle être retardée (deferable) ?
condeferredbool La contrainte est-elle retardée par défaut ?
convalidatedbool La contrainte a-t-elle été validée ? actuellement, peut seulement valoir false pour les clés étrangères et les contraintes CHECK
conrelidoidpg_class.oidTable à laquelle appartient la contrainte ; 0 si ce n'est pas une contrainte de table.
contypidoidpg_type.oidDomaine auquel appartient la contrainte ; 0 si ce n'est pas une contrainte de domaine.
conindidoidpg_class.oidL'index qui force cette contrainte (unique, clé primaire, clé étrangère, d'exclusion) ; sinon 0
confrelidoidpg_class.oidSi c'est une clé étrangère, la table référencée ; sinon 0
confupdtypechar 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
confdeltypechar Code de l'action de suppression de clé étrangère : a = no action, r = restrict, c = cascade, n = set null, d = set default
confmatchtypechar Type de concordance de la clé étrangère : f = full, p = partial, s = simple
conislocalbool  Cette contrainte est définie localement dans la relation. Notez qu'une contrainte peut être définie localement et héritée simultanément
coninhcountint4  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.
connoinheritbool  Cette contrainte est définie localement pour la relation. C'est une contrainte non héritable.
conkeyint2[]pg_attribute.attnumS'il s'agit d'une contrainte de table (incluant les clés étrangères mais pas les triggers de contraintes), liste des colonnes contraintes
confkeyint2[]pg_attribute.attnumS'il s'agit d'une clé étrangère, liste des colonnes référencées
conpfeqopoid[]pg_operator.oidS'il s'agit d'une clé étrangère, liste des opérateurs d'égalité pour les comparaisons clé primaire/clé étrangère
conppeqopoid[]pg_operator.oidS'il s'agit d'une clé étrangère, liste des opérateurs d'égalité pour les comparaisons clé primaire/clé primaire
conffeqopoid[]pg_operator.oidS'il s'agit d'une clé étrangère, liste des opérateurs d'égalité pour les comparaisons clé étrangère/clé étrangère
conexclopoid[]pg_operator.oidSi une contrainte d'exclusion, liste les opérateurs d'exclusion par colonne
conbinpg_node_tree S'il s'agit d'une contrainte de vérification, représentation interne de l'expression
consrctext S'il s'agit d'une contrainte de vérification, représentation compréhensible de l'expression

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

consrc n'est pas actualisé lors de la modification d'objets référencés ; par exemple, il ne piste pas les renommages de colonnes. Plutôt que se fier à ce champ, il est préférable d'utiliser pg_get_constraintdef() pour extraire la définition d'une contrainte de vérification.

Note

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