Hubert 'depesz' Lubaczewski:等待 PostgreSQL 19 – 新增基于时间范围的 UPDATE/DELETE 命令

💡 原文英文,约200词,阅读约需1分钟。
📝

内容提要

新增的UPDATE/DELETE命令支持基于时间范围的更新和删除,用户可指定有效时间范围,命令仅影响重叠的行,并调整历史记录。对于部分在范围内的行,系统会截断应用时间并插入“时间剩余”新行。

🎯

关键要点

  • 新增UPDATE/DELETE命令支持基于时间范围的更新和删除。

  • 用户可以指定有效时间范围,命令仅影响重叠的行。

  • 历史记录在指定范围内进行调整。

  • 对于部分在范围内的行,系统会截断应用时间并插入“时间剩余”新行。

  • 新行包含原始值,但应用时间列仅表示未触及的历史部分。

  • FOR PORTION OF语法的支持已添加,限制条件必须是常量。

  • 执行器逻辑已更新,以插入“时间剩余”部分的新行。

  • 相关文档和测试已添加。

延伸问答

PostgreSQL 19 中新增的 UPDATE/DELETE 命令有什么特点?

新增的 UPDATE/DELETE 命令支持基于时间范围的更新和删除,用户可以指定有效时间范围,命令仅影响重叠的行。

如何使用 FOR PORTION OF 语法进行时间范围更新?

用户可以使用 UPDATE t FOR PORTION OF valid_at FROM '开始时间' TO '结束时间' 来指定时间范围进行更新。

在时间范围内更新时,历史记录是如何调整的?

在指定范围内,历史记录会被调整,对于部分在范围内的行,系统会截断应用时间并插入“时间剩余”新行。

执行器逻辑在新命令中有什么变化?

执行器逻辑已更新,以插入“时间剩余”部分的新行,确保记录的完整性。

FOR PORTION OF 语法的限制条件是什么?

FOR PORTION OF 语法的限制条件必须是常量,禁止使用列引用和子查询。

新增的 UPDATE/DELETE 命令对用户有什么实际影响?

用户可以更灵活地管理时间范围内的数据更新和删除,提高数据处理的精确性和效率。

➡️

继续阅读