Postgres 18: Old and New Rows in the Returning Clause
8 months ago
- #SQL
- #Database
- #Postgres
- Postgres 18 引入了在 INSERT、UPDATE、DELETE 和 MERGE 命令的 RETURNING 子句中访问 OLD 和 NEW 值的功能。
- 一个简单的 UPDATE 示例演示了如何使用 OLD.* 和 NEW.* 同时获取旧值和新值。
- 此前,在 upsert 操作中检测新行需要依赖检查 xmax = 0 这样的实现细节。
- Postgres 18 通过允许在 RETURNING 子句中使用 OLD IS NULL 检查来简化新行识别。
- 该特性提高了代码可读性,并消除了对未公开实现细节的依赖。