假设我有这个更新语句
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=#
在线例子