Hubert 'depesz' Lubaczewski:等待 PostgreSQL 19 – 添加基于时间范围的更新/删除功能

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

PostgreSQL 19引入了“FOR PORTION OF”语法,允许用户基于时间范围更新和删除数据,简化历史数据管理,确保历史数据的准确性。

🎯

关键要点

  • PostgreSQL 19引入了'FOR PORTION OF'语法,允许基于时间范围进行更新和删除操作。
  • 用户可以使用'FOR PORTION OF'语法来简化历史数据的管理,确保历史数据的准确性。
  • 该命令自动限制在目标时间范围内的行,只有在这些范围内的历史数据会被更改。
  • 如果行的历史部分在范围内,命令会截断行的应用时间,并插入一个或多个'时间剩余'的新行。
  • 新语法支持常量边界,禁止列引用和子查询,但接受如NOW()等函数。
  • 通过'FOR PORTION OF'语法,用户可以轻松地在过去的数据中进行修改和删除。

延伸问答

PostgreSQL 19的新功能是什么?

PostgreSQL 19引入了'FOR PORTION OF'语法,允许用户基于时间范围进行数据的更新和删除。

'FOR PORTION OF'语法如何简化历史数据管理?

'FOR PORTION OF'语法自动限制在目标时间范围内的行,确保只有在这些范围内的历史数据会被更改,从而简化管理。

使用'FOR PORTION OF'语法时有哪些限制?

该语法要求边界必须是常量,禁止列引用和子查询,但接受如NOW()等函数。

如何使用'FOR PORTION OF'进行时间范围内的更新?

可以使用命令如'UPDATE t FOR PORTION OF valid_at FROM '开始时间' TO '结束时间' SET ...'来进行时间范围内的更新。

如何在PostgreSQL中删除特定时间范围内的数据?

可以使用'DELETE FROM 表名 FOR PORTION OF 时间列 FROM '开始时间' TO '结束时间' WHERE 条件'来删除特定时间范围内的数据。

使用'FOR PORTION OF'语法时如何处理历史数据的截断?

如果行的历史部分在范围内,命令会截断行的应用时间,并插入一个或多个'时间剩余'的新行。

➡️

继续阅读