PostgreSQL:将更新返回到变量/临时表

时间:2018-03-14 11:59:01

标签: postgresql

我的update语句带有returning声明。

我想要的是将结果放入变量或临时表中。

update my_table
set something = 'x'
where id ...
returning *;

我尝试使用execute语句,例如returning row_to_json(my_table.*)但变量off off仅包含更新返回的第一行。

1 个答案:

答案 0 :(得分:1)

使用带有UPDATE-RETURNING语句的CTE,然后在INSERT中使用它:

CREATE TEMP TABLE t (i int, j int);
CREATE TEMP TABLE u (i int, j int);
INSERT INTO u VALUES (1, 1), (2, 2), (3, 3);  
WITH updated AS (
  UPDATE u
  SET i = i * 10
  WHERE i < 3
  RETURNING *
)
INSERT INTO t
SELECT *
FROM updated;

SQLFiddle