↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 6.5 / 6.4
历史版本PostgreSQL 6.5 已于 2004 年 6 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

63.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       |
+---------+------------+

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

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。