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

47.7. pg_attribute

pg_attribute カタログにはテーブルの列情報が格納されます。 データベース内のすべてのテーブルの各列に対し必ず1つの pg_attribute 行があります。 (また、インデックスと pg_class に項目を持つすべてのオブジェクトに対しての属性記述があります。)

属性という表現は列と同等の意味で、歴史的背景からそのように呼ばれています。

表 47-7. pg_attribute の列

名前 参照先 説明
attrelid oid pg_class .oid この列が属するテーブル
attname name   列名
atttypid oid pg_type .oid この列のデータ型
attstattarget int4   attstattarget ANALYZE によるこの列に対する蓄積された統計情報をどの程度詳しく管理するかを規定します。 値がゼロの場合は統計情報を収集しません。 負の値の場合は、システムのデフォルトの統計目標を使用すべきであるということです。 正の値が厳密に意味するところはデータ型に依存します。 スカラデータ型に対して attstattarget は収集する "最も一般的な値" の目標となる数であり、また作成する度数分布ビンの目標数でもあります。
attlen int2   この列の型の pg_type.typlen のコピー
attnum int2   列番号。 通常、列は1から始まる番号付けがなされます。 OID のようなシステムによる列には(任意の)負の番号が付きます。
attndims int4   列が配列型の場合は次元数を表現し、そうでない時はゼロです。 (現在配列の次元数は強制されていませんのでゼロ以外のどのような値であっても "これは配列である" ということを意味します。)
attcacheoff int4   格納時は必ず-1となりますが、メモリ内の行記述子に読み込まれた場合は、行内での属性オフセットをキャッシュするために更新される可能性があります。
atttypmod int4   atttypmod は、テーブル作成時に与えられた型固有のデータ(たとえば varchar 列の最大長)を記録します。 これは型固有の入力関数や長さ強制関数に渡されます。 atttypmod を必要としない型では、通常、この値は-1です。
attbyval bool   この列の型の pg_type.typbyval のコピー
attstorage char   通常、この列の型の pg_type.typstorage のコピー。 TOAST可能なデータ型では、格納ポリシーを制御するために列の作成後に変更することができます。
attalign char   この列の型の pg_type.typalign のコピー
attnotnull bool   NOT NULL制約式。 この列を変更し制約を有効にしたり無効にしたりできます。
atthasdef bool   この列にはデフォルト値があります。 その場合、実際に値を定義する pg_attrdef カタログ内に対応する項目があります。
attisdropped bool   この列は既に削除されていて有効ではありません。 削除された列は物理的にはまだテーブル上に存在していますが、パーサによって無視されるためSQLでアクセスすることができません。
attislocal bool   この列はリレーション内でローカルに定義されます。 列がローカルに定義されると同時に継承される場合もあることに注意してください。
attinhcount int4   この列が持つ直接の祖先の数です。 祖先を持っている列の削除や名前は変更はできません。
attcollation oid pg_collation .oid 列で定義された照合順序。列が照合順序の設定ができないデータ型の場合はゼロ
attacl aclitem[]   この列に特定して付与された場合における、列レベルのアクセス権限
attoptions text[]   "keyword=value" 文字列のような、属性レベルのオプション
attfdwoptions text[]   "keyword=value" 文字列のような、外部データラッパオプションの属性レベル

削除された列の pg_attribute 項目では、 atttypid はゼロにリセットされます。 しかし attlen pg_type からコピーされた他のフィールドは、有効なままです。 この動作は、削除された列のデータ型が後になって削除されて、 pg_type 行が存在しないような状況の場合に必要となります。 attlen と他のフィールドは、テーブル内の行の内容を解釈するために使用されます。


powered by SEO.CUG.NET