此问题已在此处有答案:
Return pre-UPDATE column values using SQL only(4个答案)
3天前关闭。
使用其他表的值更新表。如何获取更新前后的值?试过了
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 change.testvalue, newvalue.testvalue
但作为回报
新的,新的
如何获得
旧的,新的
结果?
1条答案
按热度按时间brtdzjyr1#
manual explains:
可选的RETURNING子句使UPDATE根据实际更新的每一行计算并返回值。使用表的列和/或FROM中提到的其他表的列的任何表达式都可以被计算。将使用表列的新(更新后)值。RETURNING列表的语法与SELECT的输出列表的语法相同。
因此,要获取“old 2值,表必须位于
FROM
子句中,如| 测试值|测试值|
| - -----|- -----|
| 旧的|新的|
fiddle