返回介绍

3.2 系统字段

发布于 2024-10-01 23:05:10 字数 1389 浏览 0 评论 0 收藏 0

每个表都有几个系统字段,这些字段是由系统隐含定义的。因此,这些名字不能用于用户定义的字段名。请注意这些限制与这个名字是否关键字无关,把名字用引号括起来并不能让你逃离这些限制。你实际上不需要注意这些字段;只要知道它们存在就可以了。

表格 PG 的系统字段

字段名简介应用
oid行对象标识符(对象 ID)。这个字段只有在创建表的时候使用了 WITH OIDS 或者是配置参数 default_with_oids 的值为真时出现。这个字段的类型是 oid(和字段同名).
tableoid包含本行的表的 OID。这个字段对那些从继承层次中选取的查询特别有用,因为如果没有它的话,我们就很难说明一行来自哪个独立的表。 tableoid 可以和 pg_classoid 字段连接起来获取表名字。
xmin插入该行版本的事务标识(事务 ID)。一个行版本是一行的一个状态;一行的每次更新都为同一个逻辑行创建一个新的行版本。
xmax删除事务的标识(事务 ID),如果不是被删除的行版本,那么是零。在一个可见行版本里,这个字段有可能是非零。这通常意味着删除事务还没有提交,或者是一个删除的企图被回滚掉了。
cmin在插入事务内部的命令标识(从零开始)。 
cmax删除事务内部的命令标识符,或者是零。 
ctid一个行版本在它所处的表内的物理位置,如(物理块号,行号)。尽管 ctid 可以用于非常快速地定位行版本,但每次 VACUUM FULL 之后,一个行的 ctid 都会被更新或者移动。因此 ctid 是不能作为长期的行标识符的。应该使用 OID ,或者更好是用户定义的序列号,来标识一个逻辑行。

本章参考

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文