У меня есть очередь для ведения в базе данных postgres, мне нужно отслеживать положение записей на основе того, когда они вошли в очередь (время и дата), теперь в какой-то момент в моем приложении мне нужно удалить один илибольше записей из базы данных, в этом случае мне нужно изменить позиции записей относительно времени, к которому они присоединились, например, вот моя структура таблицы теперь давайте предположим, что мы удаляем запись позиции1, в этом случае позиция входа со значением позиции 2 должна обновиться до 1, а позиция от 3 до 2 соответственно, я пытаюсь сделать это следующим образом, используя row_number ()
update waitingvisitor upd
set position = a.row_number
FROM (
SELECT "queueId", row_number() over(order by "timeJoined")
from waitingvisitor
ORDER BY "timeJoined"
) as a
where upd."queueId" = a."queueId";
но все, что делает странно, я не могу понять, почему он обновляет все строки примерно так:
Теперь то, что я хочу, основано наВ поле timeJoined значения для столбца "position" должны быть обновлены соответственно, например, тому, кто присоединился раньше, должен быть присвоен более высокий приоритет.Что здесь не так?