問題:
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 このビューの列には、この制約を含むテーブルについても表示されます。