一个字段要么是一个给定表的用户定义 字段,要么是下列系统定义字段之一:
一行的唯一标识符(对象 ID).它是一个序列号, 由 Postgres 自动给所有行增加. OID 不能重复使用,并且是 32 位的量.
包含该行的表的 OID.这个属性对于那些从继承级别里选择数据的查询 特别有用,因为如果没有它,我们就很难说明一行是从哪个独立的表中 取来的.tableoid 可以与 pg_class 的 OID 字段连接起来获取表名字.
这个记录的插入事务的标识(事务 ID).(注意:一条记录是一行的一 个独立状态;每个行的 UPDATE 都创建一条新的记录表示同一逻辑行.)
在做插入动作的事务中的命令标识符(从零开始).
做删除动作的标识符(事务 ID),如果是更新记录则为零. 实际上,它对于可见记录而言从来不是非零值.
在做删除动作的事务里的命令标识符,或零. 同样它对于可见记录而言从来不是非零值.
该记录在它所在表里面的记录 ID.它是一个数值对 (块编号,快内的记录索引),它标识该记录的物理位置. 请注意尽管 ctid 可以用于快速定位记录,但一个行的 ctid 会在每次它更新的时候或者 VACUUM 的时候改变. 因此 ctid 对于长期的行标识符而言是没有什么用的. OID,或者更好的用户定义序列号,可以用于标识逻辑行.
有关系统属性的更多信息,请参考 Stonebraker, Hanson, Hong, 1987. 事务和命令标识符都是 32 位数字.