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 ряда