发布于 2026-09-10T10:59:37.196577Z · Laurenz Albe · CYBERTEC 博客

PostgreSQL 19 给 ON CONFLICT 加了 DO SELECT 变体。此前冲突时只能什么都不做或改为更新,想拿到已存在那行的主键或生成列值,还得再发一条 SELECT。新语法让带 RETURNING 的 INSERT 在冲突时直接返回现有行,并支持行锁定和 WHERE 条件。Laurenz Albe 指出,表上有生成列或触发器时收益最明显,它补齐了 DO NOTHING 与 DO UPDATE 之间的空档。
PostgreSQL 19 给 ON CONFLICT 加了 DO SELECT 变体。此前冲突时只能什么都不做或改为更新,想拿到已存在那行的主键或生成列值,还得再发一条 SELECT。新语法让带 RETURNING 的 INSERT 在冲突时直接返回现有行,并支持行锁定和 WHERE 条件。Laurenz Albe 指出,表上有生成列或触发器时收益最明显,它补齐了 DO NOTHING 与 DO UPDATE 之间的空档。
来源记录
- center.info_item · bfc4fada9474a6f4 · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · bfc4fada9474a6f4 · 2026-10-03T04:08:55.967155Z