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 *
我注意到,当我在items
中放入更多行时,它返回n-1行。
4 rows