43.13. pg_constraint

pg_constraintカタログは検査制約、主キー制約、一意性制約、外部キー制約をテーブル上に格納します(列制約は特別扱いされていません。全ての列制約はテーブル制約と同等です)。非NULL制約はpg_attributeカタログで示されます。

ドメイン上の検査制約もここに格納されます。

表 43-13. pg_constraintの列

名前参照先説明
connamename 制約名(一意である必要はありません)。
connamespaceoidpg_namespace.oid この制約を含む名前空間のOID。
contypechar  c = 検査制約、 f = 外部キー制約、 p = 主キー制約、 u = 一意性制約
condeferrablebool 制約はDEFERRED可能(トランザクション終了まで制約のチェックを行わない)かどうか?
condeferredbool 制約はデフォルトでdeferredかどうか?
conrelidoidpg_class.oidこの制約が存在しているテーブルです。テーブル制約でなければ0です。
contypidoidpg_type.oidこの制約が存在しているドメインです。ドメイン制約でなければ0です。
confrelidoidpg_class.oid外部キーであれば、参照されるテーブルです。そうでなければ0です。
confupdtypechar 外部キー更新アクションコード
confdeltypechar 外部キー削除アクションコード
confmatchtypechar 外部キーの一致型
conkeyint2[]pg_attribute.attnumテーブル制約であれば、その制約によって制約される列のリスト
confkeyint2[]pg_attribute.attnum外部キーであれば、参照される列のリスト
conbintext 検査制約であれば、式の内部表現形式
consrctext 検査制約であれば、人間が見てわかる形式の式

注意: consrcは参照されているオブジェクトが変更されても更新されません。例えば列名の変更を追跡しません。このフィールドに信頼を寄せるよりも、検査制約を引き出すのにはpg_get_constraintdef() を使うのが最善です。

注意: pg_class.relchecksは与えられたリレーションに対してこのテーブルで検出された検査制約のエントリの数と一致しなければなりません。