PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

5.6. 系统列 #

每个数据表都由系统在底层隐式维护了若干系统列(system columns)。这些列通常不会出现在常规的 SELECT * 返回列表中,但可以在查询中显式指定列名进行检索。

核心系统列包括:

tableoid

包含该数据行的物理表的全局对象标识符(OID)。当针对包含表继承或分区的父表发起查询时,该字段特别实用,能直观标识各行数据物理存放于哪张子表或具体分区中。

xmin

写入(插入)该数据行的事务的事务标识符(XID)。

xmax

更新或删除该数据行的事务的事务标识符(XID),如果该行尚未被修改或删除,则此字段为零。

cmin

插入事务内部的命令标识符(从零开始递增)。

cmax

更新或删除事务内部的命令标识符。

ctid

该数据行版本在数据表所属磁盘文件中的物理行版本位置(由数据块编号和块内元组索引偏移量构成)。虽然 ctid 能用于以极致速度精确定位物理行,但每当数据行被更新(UPDATE)时,MVCC 机制会为其生成新的物理行版本,因而 ctid 会随之改变,不能充当长期的行逻辑主键。