inspector_shnirevadze
@inspector_shnirevadze

Как вывести значение поля до выполнения UPDATE, вместе со значением после UPDATE?

Мне нужно в одной выгрузке вывести значение поля step до выполения запроса UPDATE, и значение поля step которое стало после выполнения UPDATE
61714e7497775971895955.png
Как можно такое реализовать без сохнанения истории поля STEP и создания дополнительных полей и таблиц.
Мой UPDATE:
UPDATE users
SET step = 'confirmed'
FROM (
     select string_to_array(translate(r::text, '" )(\n-',''),',') AS rs
     from (values (${r})) as q (r)
     ) qq
WHERE users.number = any(qq.rs)
RETURNING *;
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Упрощенный вариант - использовать в запросе таблицы со своим алиасом

UPDATE users x
SET    step = 'confirmed'
FROM   users y
WHERE  x.number = y.number
AND    x.number = 1
RETURNING y.number AS number, y.step AS old_step, x.step;


PostgreSQL fiddle
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Добавь в источник данных копию изменяемой таблицы, связанную по первичному ключу или иному уникальному полю/выражению, и оттуда возьми исходное значение.

DEMO
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы