在CTE中使用RETURNING的UPDATE值进行UPDATE,影响0行

时间:2018-10-05 17:30:13

标签: postgresql common-table-expression

UPD:感谢@ S-Man提供了更简单的示例

我在CTE中更新了一张表(仅一行)。我用RETURNING子句给出了更新后的值。现在,我尝试使用RETURNING子句中的值再次更新同一行。结果,我收到“受影响的0行”。

(这里的问题是更复杂的代码的简化版本,具有更多意义)

我无法解释这种行为。

CREATE TABLE items (
    id int
);

INSERT INTO items VALUES (1);


WITH abc AS (
    UPDATE items
    SET id = id + 1
    RETURNING 42
)
UPDATE items
SET id = (SELECT id FROM abc LIMIT 1)
RETURNING *

dbfiddle

我注意到,当我在items中放入更多行时,它返回n-1行。 4 rows

0 个答案:

没有答案