Hubert 'depesz' Lubaczewski:等待 PostgreSQL 18 - 在 DML 查询的 RETURNING 中添加对 OLD/NEW 的支持
💡
原文英文,约600词,阅读约需2分钟。
📝
内容提要
2025年1月16日,Dean Rasheed 提交补丁,支持在 DML 查询的 RETURNING 中使用 OLD/NEW,允许显式返回插入、更新和删除的旧值与新值,增强查询灵活性与兼容性。
🎯
关键要点
- 2025年1月16日,Dean Rasheed 提交补丁,支持在 DML 查询的 RETURNING 中使用 OLD/NEW。
- 允许显式返回插入、更新和删除的旧值与新值,增强查询灵活性与兼容性。
- RETURNING 列表中可以使用特殊别名 'old' 和 'new',并支持用户自定义别名。
- 在 INSERT 操作中,旧值通常为 NULL;在 DELETE 操作中,新值通常为 NULL。
- 此补丁解决了以往无法直接返回更新前值的问题,简化了查询过程。
- 用户可以直接在 UPDATE 查询中使用 OLD 和 NEW,提升了查询的可读性和效率。
❓
延伸问答
PostgreSQL 18 中的 RETURNING 功能有什么新变化?
PostgreSQL 18 中的 RETURNING 功能新增了对 OLD/NEW 的支持,允许在 DML 查询中显式返回插入、更新和删除的旧值与新值。
如何在 DML 查询中使用 OLD 和 NEW?
在 DML 查询中,可以使用特殊别名 'old' 和 'new',并支持用户自定义别名来返回旧值和新值。
这个补丁解决了什么问题?
这个补丁解决了以往无法直接返回更新前值的问题,简化了查询过程,提高了查询的可读性和效率。
在 INSERT 和 DELETE 操作中,OLD 和 NEW 的值是什么?
在 INSERT 操作中,旧值通常为 NULL;在 DELETE 操作中,新值通常为 NULL。
如何自定义 RETURNING 列表中的别名?
可以使用新语法,例如 RETURNING WITH (OLD AS o, NEW AS n) 来自定义 RETURNING 列表中的别名。
这个补丁对现有查询有什么影响?
补丁保持了向后兼容性,现有查询的解释不会改变,即使它们已经使用了 'old' 或 'new' 作为别名。
➡️