UPDATE со значениями RETURNING UPDATE в CTE, затронуты 0 строк - PullRequest
0 голосов
/ 05 октября 2018

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

...