PostgreSQL-系统列

2022/9/4 2:23:58

本文主要是介绍PostgreSQL-系统列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

每个表都有几个由系统隐式定义的系统列。因此,这些名称不能用作用户定义列的名称。(请注意,这些限制与名称是否是关键字是分开的;引用名称不会让您逃避这些限制。)您实际上不需要关心这些列;只知道它们存在。

tableoid

包含此行的表的 OID。该列对于从分区表或继承层次结构中进行选择的查询特别方便,因为没有它,很难判断一行来自哪个单独的表。tableoid 可以与 pg_class 的 oid 列连接以获得表名。

xmin

此行版本的插入事务的标识(事务 ID)。(行版本是行的单个状态;行的每次更新都会为同一逻辑行创建一个新的行版本。)

cmin

插入事务中的命令标识符(从零开始)。

xmax

删除事务的标识(事务 ID),或者对于未删除的行版本为零。在可见行版本中,此列可能不为零。这通常表明删除事务尚未提交,或者尝试的删除已回滚。

cmax

删除事务中的命令标识符,或零。

ctid

行版本在其表中的物理位置。请注意,尽管 ctid 可用于非常快速地定位行版本,但如果行的 ctid 被 VACUUM FULL 更新或移动,它会发生变化。因此 ctid 作为长期行标识符是无用的。应该使用主键来标识逻辑行。

事务标识符也是 32 位。在长期存在的数据库中,事务 ID 可以环绕。

命令标识符也是 32 位数量。这在单个事务中创建了 2的32次方(40 亿)条 SQL 命令的硬限制。在实践中,这个限制不是问题——请注意,限制是 SQL 命令的数量,而不是处理的行数。此外,只有实际修改数据库内容的命令才会使用命令标识符。



这篇关于PostgreSQL-系统列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程