pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
每个表都有几个由系统隐式定义的系统列。因此,这些名称不能用作用户定义列的名称。(注意,这些限制与名称是否为关键字无关;给名称加引号也不能绕过这些限制。)你其实不必关心这些列的细节,只需要知道它们存在即可。
oid 行的对象标识符(object ID)。这是一个由 PostgreSQL 自动添加到所有表行的 序列号(除非表是用 WITHOUT OIDS 创建的,此时 这个列不存在)。这个列的类型是 oid(与列同名);该类型的更多信息见 第 5.10 节。
tableoid包含该行的表的 OID。这个属性对于从继承 层次中选择的查询特别有用,因为如果没有它,很难判断一行 来自哪个具体的表。可以把 tableoid 与 pg_class 的 oid 列连接来获得表名。
xmin插入该元组的事务的标识(事务 ID)。 (注意:在这里的语境中,元组是行的一个 具体状态;行的每次更新都会为同一个逻辑行创建一个新元组。)
cmin插入事务内的命令标识符(从零开始)。
xmax删除事务的标识(事务 ID),对未删除的元组为零。 在可见的元组中这个字段也可能 非零:这通常表示删除事务 尚未提交,或者一次删除尝试 已被回滚。
cmax删除事务内的命令标识符,或为零。
ctid元组在其表内的物理位置。注意 虽然 ctid 可以用来 很快地定位元组,但一行的 ctid 在每次被更新或被 VACUUM FULL 移动时都会改变。因此 ctid 作为长期行 标识符是没有用的。应该用 OID,或者更好的是用户自定义的 序列号来标识逻辑行。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。