問題:
PostgreSQLのテーブルで制約の名前を見つけたいと考えています。
例:
テーブルstudent
。
解決策:
SELECT conname, contype FROM pg_catalog.pg_constraint JOIN pg_class t ON t.oid = c.conrelid WHERE t.relname ='student';
結果は次のとおりです。
conname | contype |
---|---|
student_age_check | c |
student_pkey | p |
student_personal_number_key | u |
student_country_id_fkey | f |
ディスカッション:
PostgreSQLで制約の名前を見つけるには、ビューpg_constraint
pg_catalog
スキーマ。ビューに参加するpg_catalog.pg_constraint
ビューpg_class
(JOIN pg_class t ON t.oid = c.conrelid
)そしてrelname
を使用します テーブル名で制約をフィルタリングする列。この例では、テーブルstudent
(WHERE t.relname ='student'
。
列conname
を選択します およびcontype
制約タイプとともに制約名を表示します。列contype
、値「p」は主キー、「f」は外部キー、「u」はUNIQUE
を表します。 制約、および「c」はCHECK
を表します 制約。
たとえば、student_pkey
という名前の制約を確認できます。 student
テーブル。 contype
列には、制約のタイプが示されます。主キーの場合、これはp
です。 。 conname
このビューの列には、この制約を含むテーブルについても表示されます。