★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 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.7. pg_attribute

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

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

表51.7 pg_attributeの列

名前参照先説明
attrelidoidpg_class.oidこの列が属するテーブル
attnamename 列名
atttypidoidpg_type.oidこの列のデータ型
attstattargetint4  attstattargetANALYZEによるこの列に対する蓄積された統計情報をどの程度詳しく管理するかを規定します。 値がゼロの場合は統計情報を収集しません。 負の値の場合は、システムのデフォルトの統計目標を使用すべきであるということです。 正の値が厳密に意味するところはデータ型に依存します。 スカラデータ型に対してattstattargetは収集する最も一般的な値の目標となる数であり、また作成する度数分布ビンの目標数でもあります。
attlenint2  この列の型のpg_type.typlenのコピー
attnumint2  列番号。 通常の列には1から始まる番号付けがなされます。 ctidのようなシステムによる列には(任意の)負の番号が付きます。
attndimsint4  列が配列型の場合は次元数を表現し、そうでない時はゼロです。 (現在配列の次元数は強制されていませんのでゼロ以外のどのような値であってもこれは配列であるということを意味します。)
attcacheoffint4  格納時は必ず-1ですが、メモリ内の行記述子に読み込まれた場合は、行内での属性オフセットをキャッシュするために更新される可能性があります。
atttypmodint4  atttypmodは、テーブル作成時に与えられた型固有のデータ(たとえばvarchar列の最大長)を記録します。 これは型固有の入力関数や長さ強制関数に渡されます。 atttypmodを必要としない型では、通常、この値は-1です。
attbyvalbool  この列の型のpg_type.typbyvalのコピー
attstoragechar  通常、この列の型のpg_type.typstorageのコピー。 TOAST可能なデータ型では、格納ポリシーを制御するために列の作成後に変更することができます。
attalignchar  この列の型のpg_type.typalignのコピー
attnotnullbool  非NULL制約を表します。
atthasdefbool  この列にはデフォルト値あるいは生成式があります。 その場合、実際に値を定義するpg_attrdefカタログ内に対応する項目があります。 (これがデフォルトなのか生成式なのかはattgeneratedをチェックします。)
atthasmissingbool  この列は、行から列の値が完全に失われている場合に使われる値を持ちます。 これは、行が作られた後で非不安定(non-volatile)なDEFAULT値を持つ列が追加される際に起こります。 実際に使われる値はattmissingval列に格納されています。
attidentitychar  0バイト('')ならこれはIDENTITY列ではありません。 IDENTITY列では、GENERATED ALWAYSならa、GENERATED BY DEFAULTならdになります。
attgeneratedchar  ゼロバイト('')なら、生成列ではありません。 さもなければs= storedです。 (将来他の値が追加されるかも知れません。)
attisdroppedbool  この列は既に削除されていて有効ではありません。 削除された列は物理的にはまだテーブル上に存在していますが、パーサによって無視されるためSQLでアクセスすることができません。
attislocalbool  この列はリレーション内でローカルに定義されます。 列がローカルに定義されると同時に継承される場合もあることに注意してください。
attinhcountint4  この列が持つ直接の祖先の数です。 祖先を持っている列の削除や名前は変更はできません。
attcollationoidpg_collation.oid 列で定義された照合順序。列が照合順序の設定ができないデータ型の場合はゼロ
attaclaclitem[]  この列に特定して付与された場合における、列レベルのアクセス権限
attoptionstext[]  keyword=value文字列のような、属性レベルのオプション
attfdwoptionstext[]  keyword=value文字列のような、外部データラッパオプションの属性レベル
attmissingvalanyarray  この列は、行から列の値が完全に失われている場合に使われる値を持つ一要素配列を持ちます。 これは、行が作られた後で非不安定(non-volatile)なDEFAULT値を持つ列が追加される際に起こります。 この値はatthasmissingが真のときだけ使用されます。 値がなければその列はNULLになります。

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