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 également stockées dans ce catalogue.
Tableau 44.12. 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 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é | |
condeferrable | bool | La contrainte peut-elle être retardée (deferable) ? | |
condeferred | bool | La contrainte est-elle retardé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 : 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, u = simple (non spécifié) | |
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 | int4 | Le nombre d'ancêtres 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. | |
conkey | int2[] | pg_attribute.attnum | S'il s'agit d'une contrainte de table (incluant une clé étrangère), liste des colonnes contraintes |
confkey | int2[] | pg_attribute.attnum | S'il s'agit d'une clé étrangère, liste des colonnes référencées |
conpfeqop | oid[] | 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[] | 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[] | 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 |
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 |
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.
pg_class.relchecks doit accepter le même nombre de contraintes de vérification pour chaque relation.