★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

3.7. pg_attribute

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

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

Table 3-7. pg_attribute の列

名前参照先説明
attrelidoidpg_class.oidこの列が属するテーブル
attnamename 列名
atttypidoidpg_type.oidこの列のデータ型
attstattargetint4 attdispersionANALYZE によってこの列にたいする集積された統計情報の詳細の度合を管理するものです。値がゼロの場合は統計情報を収集しません。 負の値の場合は、システムのデフォルトの統計目標を使用すべきであるということです。正の値が厳密に意味するところはデータ型に依存します。スカラーデータ型に対して attstattarget は収集する"もっとも一般的な値"の目標となる数でありまた作成する度数分布図保存場所の目標数でもあります。
attlenint2  pg_typetyplen をこの列の型に合わせたもの
attnumint2 列の数。通常列は 1 から始まり増えてゆく番号付けがされます。OID のようなシステムによる列は任意の負の数を保持しています。
attndimsint4  列が配列型の場合は次元数を表現し、そうでない時はゼロ。 (現在配列の次元数は強制されていませんのでゼロ以外のどのような値であっても"これは配列です"を意味します。)
attcacheoffint4 格納時は必ず -1 となりますが、メモリ内でタプル記述子にロードされた場合は、タプル内の更新されたキャッシュの属性のオフセットである可能性があります。
atttypmodint4 atttypmod はテーブルが作成されたときに指定された(たとえば、varcharカラムの最大長さなど)型固有のデータ型を記録します。 そしてそれは型特有の入力関数と長さ強制変換関数に渡されます。typmod の必要がない型の値は通常 ‐1 です。
attbyvalbool pg_typetypbyval をこの列の型に合わせたもの
attstoragechar  通常、pg_typetypstorage をこの列の型に合わせたもの TOAST 可能なデータ型では、格納ポリシーを制御するために、列の作成後に変更することができます。
attissetbool 真の場合、この属性は集合となります。その場合、属性に実際に格納されるものは pg_proc カタログにあるタプルの OID になります。pg_proc タプルにはこの集合を定義する問い合わせ文字列、つまり集合を取得するための問い合わせ、があります。ですから atttypid(上記を参照)はこの問い合わせによって返された型を参照しますが、この属性の実際の長さは OID の長さとなります。 これは理論上なのですが、今日ではあまり守られていないようです。
attalignchar pg_typetypalign この列の型に合わせたもの
attnotnullbool NOT NULL 制約の表現。このフィールドを変更し制約を有効にしたり、無効にしたりできます
atthasdefbool このカラムにはデフォルト値をもっています。 その場合、実際に値を定義する pg_attrdef カタログ中に対応する見出し語があります。
attisdroppedbool  この列は削除されており、有効ではありません。 削除された列は物理的にはまだテーブル上に存在していますが、パーサによって無視されるため SQL でアクセスすることはできません。
attislocalbool  この列は、リレーション内でローカルに定義されます。 列がローカルに定義されると同時に継承される場合もあることに注意してください。
attinhcountint4  この列の直接の祖先の数です。 ゼロ以外の数の祖先をもつ列の削除や名前変更はできません。