You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何获取UPDATE操作前后的数据值?

解决UPDATE语句返回更新前后值的问题

在PostgreSQL中,你当前的语句返回两个"new"是因为RETURNING里的change.testvalue已经是更新后的值(已被替换成newvalue.testvalue),所以和newvalue.testvalue重复。要获取更新前后的数值,只需在RETURNING子句中用OLD关键字引用更新前的行数据:

CREATE temp table change ( id integer, testvalue varchar );
insert into change values (1, 'old' );

CREATE temp table newvalue ( id integer, testvalue varchar );
insert into newvalue  values (1, 'new' );

UPDATE change
SET testvalue = newvalue.testvalue
FROM newvalue
WHERE change.id = newvalue.id
RETURNING OLD.testvalue AS old_value, newvalue.testvalue AS new_value;

说明:

  • OLD.testvalue:代表change表中该行更新前的testvalue值,也就是你需要的"old"
  • newvalue.testvalue:是用来更新的新值,也可以用NEW.testvalue(和更新后的change.testvalue等价)

执行这条语句后,返回结果会是old, new,符合你的需求。

内容的提问来源于stack exchange,提问作者Andrus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:22:07