Hasty Briefsbeta

双语

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 检查来简化新行识别。
  • 该特性提高了代码可读性,并消除了对未公开实现细节的依赖。