1.2. カラム

カラムは与えられたテーブルのユーザ定義カラム か、もしくは下記のシステム定義カラムのどちらかです。

oid

行の一意な識別子(オブジェクト ID)。これは Postgres が全ての 行に自動的に加える通番の数です。OID は再使用されることはなく 32 ビット長です。

tableoid

この行を含むテーブルの OID です。この属性は特に、継承階層 からのセレクトでは便利です。なぜならそれなしでは、どのテーブル からその行が来たのかわかりづらいからです。tableoid は テーブル名を得るために pg_class の OID 属性に結合すること ができます。

xmin

このタプルの挿入トランザクションの識別情報(トランザクションID) です。(注:タプルは行の個別の状態です。行のそれぞれの UPDATE は同じ論理行のための新しいタプルを作ります。

cmin

挿入トランザクション内のコマンド識別子(ゼロから始まる)です。

xmax

削除トランザクションの識別情報(トランザクションID)です。 削除されていないタプルではゼロです。実際には、目に見える タプルについてはゼロ以外であることはありません。

cmax

削除トランザクション内のコマンド識別子、もしくはゼロです。 これも同じく、目に見えるタプルについてはゼロ以外であることは ありません。

ctid

そのテーブル内のタプルのタプルIDです。これは組 (ブロック数、ブロック内のタプルインデックス)でタプルの物理的 位置を識別します。ctid はタプルを素早く見つけるために使うことが できますが、行の ctid は更新されるごと、あるいはバキューム で動かされる度に変わります。したがって、ctid は長期の行 識別子としては使えません。OID、あるいはさらに良いのは ユーザ定義の通番数ですが、論理行を識別するためにはこれらを 使うべきです。

システム属性のさらに詳しい情報については Stonebraker, Hanson, Hong, 1987を見て下さい。 トランザクションとコマンド識別子は 32 ビットです。