PostgreSQL 中有一些系统列(System Columns),它们是一些特殊的列,用于提供有关表和行的元数据信息。以下是一些常见的 PostgreSQL 系统列:

1. ctid 列:

ctid 列是一个系统列,用于标识表中的物理行。每个 ctid 值由一个块号和项号组成,指示行在表中的位置。
SELECT ctid, * FROM example_table;

2. oid 列:

oid 列是一个系统列,用于标识表中的对象标识符(Object Identifier)。在 PostgreSQL 9.1 版本及之后,默认情况下,用户定义的表不再具有 oid 列。可以通过在创建表时明确指定 WITH OIDS 选项来启用 oid 列。
CREATE TABLE example_table WITH OIDS (
    oid_column oid,
    -- 其他列
);

3. xmin 和 xmax 列:

xmin 表示插入或更新行的事务 ID,而 xmax 表示删除行的事务 ID。这些列用于维护多版本并发控制(MVCC)系统。
SELECT xmin, xmax, * FROM example_table;

4. tableoid 列:

tableoid 列是一个系统列,表示包含行的表的对象标识符。它用于标识表中的数据来自于哪个表。
SELECT tableoid, * FROM example_table;

请注意,tableoid 列在包含继承关系的父表中会返回子表的 tableoid 值。

这些系统列通常在进行系统级别的操作或者进行性能调优时使用。在正常的应用程序开发中,它们通常不会直接用到。


转载请注明出处:http://www.zyzy.cn/article/detail/8125/PostgreSQL