↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.0 / 6.5 / 6.4 / 6.3
历史版本。 PostgreSQL 6.4 已结束支持。 请参阅 当前版本手册.

5.3. 时间旅行

从 Postgres v6.2 起,不再支持时间旅行。原因有几个:性能影响、存储大小,以及一个会在短时间内增长到无限大小的 pg_time 文件。

触发器等新特性允许在需要时模拟时间旅行的行为,而在不需要时(对大多数用户来说,大多数时候都不需要)不产生开销。更多信息见 contrib 目录中的示例。

时间旅行已废弃

本节余下的文字只是暂时保留,直到能够用实现相同目的的新技术的语境重写为止。有人志愿吗?—— thomas 1998-01-12

Postgres 支持时间旅行的概念。这个特性允许用户运行历史查询。例如,要查找 Mariposa 市当前的人口,可以查询:

SELECT * FROM cities WHERE name = 'Mariposa';

+---------+------------+----------+
|name     | population | altitude |
+---------+------------+----------+
|Mariposa | 1320       | 1953     |
+---------+------------+----------+

Postgres 会自动找到在当前时间有效的 Mariposa 记录版本。还可以给出一个时间范围。例如要查看 Mariposa 过去和现在的人口,可以查询:

SELECT name, population
    FROM cities['epoch', 'now']
    WHERE name = 'Mariposa';

其中"epoch"表示系统时钟的起点。

注意

在 UNIX 系统上,这总是 1970 年 1 月 1 日 GMT 午夜。

如果你已经执行了目前为止的所有示例,那么上面的查询返回:

+---------+------------+
|name     | population |
+---------+------------+
|Mariposa | 1200       |
+---------+------------+
|Mariposa | 1320       |
+---------+------------+

时间范围的默认起点是系统可表示的最早时间,默认终点是当前时间;因此,上面的时间范围可以缩写为 ``[,].''

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.