43.10. pg_constraint

Le catalogue pg_constraint stocke les vérifications, clés primaires, clés uniques et étrangères 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.

Les contraintes de vérification de domaine sont aussi stockées ici.

Tableau 43-10. Colonnes de pg_constraint

NomTypeRéférencesDescription
connamename Nom de la contrainte (pas nécessairement unique !)
connamespaceoidpg_namespace .oid OID de l'espace de noms qui contient cette contrainte.
contypechar  c = contrainte de vérification, f = contrainte de clé étrangère, p = contrainte de clé primaire, u = contrainte de clé unique
condeferrablebool La contrainte est-elle différable ?
condeferredbool La contrainte est-elle différée par défaut ?
conrelidoidpg_class.oid Table à 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.
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
confdeltypechar Code de l'action de suppression de clé étrangère
confmatchtypechar Type de vérification de clé étrangère
conkeyint2[]pg_attribute .attnumSi c'est une contrainte de table, liste des colonnes contraintes
confkeyint2[]pg_attribute .attnumSi c'est une clé étrangère, liste des colonnes référencées
conbintext 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

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

Note : pg_class.relchecks doit connaître le même nombre de contraintes de vérification pour chaque relation.