Problème :
Vous voulez trouver les noms des contraintes dans une table dans PostgreSQL.
Exemple :
On veut afficher les noms des contraintes dans la table student
.
Solution :
SELECT conname, contype FROM pg_catalog.pg_constraint JOIN pg_class t ON t.oid = c.conrelid WHERE t.relname ='student';
Voici le résultat :
conname | contype |
---|---|
student_age_check | c |
student_pkey | p |
student_personal_number_key | u |
student_country_id_fkey | f |
Discussion :
Pour trouver le nom d'une contrainte dans PostgreSQL, utilisez la vue pg_constraint
dans le pg_catalog
schéma. Rejoindre la vue pg_catalog.pg_constraint
avec la vue pg_class
(JOIN pg_class t ON t.oid = c.conrelid
) et utilisez le relname
colonne pour filtrer les contraintes par nom de table. Dans notre exemple, nous sélectionnons les contraintes de la table student
(WHERE t.relname ='student'
).
Sélectionnez les colonnes conname
et contype
pour voir le nom de la contrainte avec le type de contrainte. Dans la colonne contype
, la valeur 'p' est pour une clé primaire, 'f' est pour une clé étrangère, 'u' est pour le UNIQUE
contrainte, et 'c' est pour le CHECK
contrainte.
Par exemple, vous pouvez voir la contrainte nommée student_pkey
pour la clé primaire dans le student
table. Le contype
la colonne vous indique le type de la contrainte, qui pour la clé primaire est p
. Le conname
colonne de cette vue vous indique également la table contenant cette contrainte.