PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment trouver le nom d'une contrainte dans PostgreSQL

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.