他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

51.13. pg_constraint

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

(CREATE CONSTRAINT TRIGGERで作成される)ユーザ定義の制約トリガもこのテーブルの項目の元になります。

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

表51.13 pg_constraintの列

列 型

説明

oid oid

行識別子

conname name

制約名(一意である必要はありません)。

connamespace oid (参照先 pg_namespace.oid

この制約を含む名前空間のOID。

contype char

c = 検査制約、 f = 外部キー制約、 p = 主キー制約、 u = 一意性制約、 t = 制約トリガ, x = 排他制約

condeferrable bool

制約は遅延可能かどうか?

condeferred bool

制約はデフォルトで遅延可能かどうか?

convalidated bool

制約が検証されているか?現時点では外部キーとチェック制約の場合のみ偽になる可能性があります。

conrelid oid (参照先 pg_class.oid

この制約が存在しているテーブルです。テーブル制約でなければ0です。

contypid oid (参照先 pg_type.oid

この制約が存在しているドメインです。ドメイン制約でなければ0です。

conindid oid (参照先 pg_class.oid

一意性制約、主キー制約、外部キー制約、排他制約の場合、この制約をサポートするインデックス。 さもなくばゼロ。

conparentid oid (参照先 pg_constraint.oid

パーティション内の制約なら、親パーティションテーブルの該当制約、そうでなければ0。

confrelid oid (参照先 pg_class.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[] (参照先 pg_attribute.attnum

テーブル制約(外部キーを含みますが制約トリガは含みません)であれば、その制約によって制約される列のリスト

confkey int2[] (参照先 pg_attribute.attnum

外部キーであれば、参照される列のリスト

conpfeqop oid[] (参照先 pg_operator.oid

外部キーであれば、PK = FKの比較のための同値演算子のリスト

conppeqop oid[] (参照先 pg_operator.oid

外部キーであれば、PK = PKの比較のための同値演算子のリスト

conffeqop oid[] (参照先 pg_operator.oid

外部キーであれば、FK = FKの比較のための同値演算子のリスト

conexclop oid[] (参照先 pg_operator.oid

排他制約の場合、列単位の排他演算子のリスト。

conbin pg_node_tree

チェック制約なら式の内部表現。(pg_get_constraintdef()を使ってチェック制約の定義を取り出すことをお勧めします。)


排他制約の場合、単純な列参照である制約要素でのみconkeyが有用です。 その他の場合、conkeyはゼロであり、関連するインデックスは制約される式を調査して見つけなければなりません。 (したがってインデックスではconkeypg_index.indkeyの内容と同じものを持ちます。)

注記

pg_class.relchecksはそれぞれのリレーションに対してこのテーブルで検出された検査制約の項目数と一致しなければなりません。