pg_constraint
pg_constraint
カタログはテーブル上の検査制約、主キー制約、一意性制約、外部キー制約、排他制約を格納します
(列制約は特別扱いされていません。
全ての列制約は何らかのテーブル制約と同等です。)
非NULL制約はここではなく、pg_attribute
カタログで示されます。
(CREATE CONSTRAINT TRIGGER
で作成される)ユーザ定義の制約トリガもこのテーブルの項目の元になります。
ドメイン上の検査制約もここに格納されます。
表51.13 pg_constraint
の列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
oid | oid | 行識別子 | |
conname | name | 制約名(一意である必要はありません)。 | |
connamespace | oid |
| この制約を含む名前空間のOID。 |
contype | char |
c = 検査制約、
f = 外部キー制約、
p = 主キー制約、
u = 一意性制約、
t = 制約トリガ,
x = 排他制約
| |
condeferrable | bool | 制約は遅延可能かどうか? | |
condeferred | bool | 制約はデフォルトで遅延可能かどうか? | |
convalidated | bool | 制約が検証されているか?現時点では外部キーとチェック制約の場合のみ偽になる可能性があります。 | |
conrelid | oid |
| この制約が存在しているテーブルです。テーブル制約でなければ0です。 |
contypid | oid |
| この制約が存在しているドメインです。ドメイン制約でなければ0です。 |
conindid | oid |
| 一意性制約、主キー制約、外部キー制約、排他制約の場合、この制約をサポートするインデックス。 さもなくばゼロ。 |
conparentid | oid |
| パーティション内の制約なら、親パーティションテーブルの該当制約、そうでなければ0。 |
confrelid | oid |
| 外部キーであれば、参照されるテーブルです。そうでなければ0です。 |
confupdtype | char | 外部キー更新アクションコード:
a = no action,
r = restrict,
c = cascade,
n = set null,
d = set default
| |
confdeltype | char | 外部キー削除アクションコード:
a = no action,
r = restrict,
c = cascade,
n = set null,
d = set default
| |
confmatchtype | char | 外部キーの一致型:
f = full,
p = partial,
s = simple
| |
conislocal | bool | この制約はリレーションでローカルに定義されています。制約はローカルに定義されていて同時に継承されます。 | |
coninhcount | int4 | この制約がもつ直系の先祖の数。 先祖の数がゼロではない制約は削除や改名はできません。 | |
connoinherit | bool | この制約はリレーションのためにローカルで定義されます。これは非継承制約です。 | |
conkey | int2[] |
| テーブル制約(外部キーを含みますが制約トリガは含みません)であれば、その制約によって制約される列のリスト |
confkey | int2[] |
| 外部キーであれば、参照される列のリスト |
conpfeqop | oid[] |
| 外部キーであれば、PK = FKの比較のための同値演算子のリスト |
conppeqop | oid[] |
| 外部キーであれば、PK = PKの比較のための同値演算子のリスト |
conffeqop | oid[] |
| 外部キーであれば、FK = FKの比較のための同値演算子のリスト |
conexclop | oid[] |
| 排他制約の場合、列単位の排他演算子のリスト。 |
conbin | pg_node_tree | チェック制約なら式の内部表現。(pg_get_constraintdef() を使ってチェック制約の定義を取り出すことをお勧めします。) |
排他制約の場合、単純な列参照である制約要素でのみconkey
が有用です。
その他の場合、conkey
はゼロであり、関連するインデックスは制約される式を調査して見つけなければなりません。
(したがってインデックスではconkey
はpg_index
.indkey
の内容と同じものを持ちます。)
pg_class.relchecks
はそれぞれのリレーションに対してこのテーブルで検出された検査制約の項目数と一致しなければなりません。