pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
从 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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。