PostgreSQLLa base de données la plus sophistiquée au monde.

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

Nom Type Références Description
conname name   Nom de la contrainte (pas nécessairement unique !)
connamespace oid pg_namespace .oid OID de l'espace de noms qui contient cette contrainte.
contype char   c = contrainte de vérification, f = contrainte de clé étrangère, p = contrainte de clé primaire, u = contrainte de clé unique
condeferrable bool   La contrainte est-elle différable ?
condeferred bool   La contrainte est-elle différée par défaut ?
conrelid oid pg_class.oid Table à laquelle appartient la contrainte ; 0 si ce n'est pas une contrainte de table.
contypid oid pg_type .oid Domaine auquel appartient la contrainte ; 0 si ce n'est pas une contrainte de domaine.
confrelid oid pg_class .oid Si c'est une clé étrangère, la table référencée ; sinon 0
confupdtype char   Code de l'action de mise à jour de la clé étrangère
confdeltype char   Code de l'action de suppression de clé étrangère
confmatchtype char   Type de vérification de clé étrangère
conkey int2[] pg_attribute .attnum Si c'est une contrainte de table, liste des colonnes contraintes
confkey int2[] pg_attribute .attnum Si c'est une clé étrangère, liste des colonnes référencées
conbin text   S'il s'agit d'une contrainte de vérification, représentation interne de l'expression
consrc text   S'il s'agit d'une contrainte de vérification, représentation compréhensible de l'expression

[Note]

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]

Note

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