無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

47.13. pg_constraint

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

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

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

表 47-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 一意性制約、プライマリキー制約、外部キー制約、排他制約の場合、この制約をサポートするインデックス。 さもなくばゼロ。
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   検査制約であれば、式の内部表現形式
consrc text   検査制約であれば、人間が見てわかる形式の式

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

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

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


powered by SEO.CUG.NET