如何在postgresql更新时返回所有列而不仅仅是更新的列?



假设我有这个更新语句

UPDATE person set age = 20,location = 'us' WHERE id = 1234

基于postgresql关于UPDATE的文档,它只能返回更新的字段。但我想要得到所有字段,不管是否更新

RETURNING *

不工作

returning *will返回已更新行的所有列。

引自手册

如果UPDATE命令包含RETURNING子句,则结果将类似于包含RETURNING列表中定义的列和值的SELECT语句

所以returning *select *很像

postgres=# create table foo (id int, c1 int, c2 int, c3 int, c4 int);
CREATE TABLE
postgres=# insert into foo values (1, 2, 3, 4, 5);
INSERT 0 1
postgres=# update foo set c4 = 42 where id = 1 returning *;
id | c1 | c2 | c3 | c4
----+----+----+----+----
1 |  2 |  3 |  4 | 42
(1 row)
UPDATE 1
postgres=#

在线例子

相关内容

最新更新