Логика работы SELECT FOR UPDATE

1. polin11 05.04.23 02:57 Сейчас в теме
Использую СУБД PGSQL.

Нужно получить мин. значение CreateDate из таблицы документ
SEL ECT MIN("CreateDate")
FR OM "Document"

если минимальная дата < текущей в цикле вешается транзация и пересчитывается поле CreateDate, достаю записи
таким запросом:
SEL ECT *
FR OM "Document"
WH ERE "CreateDate" < NOW()::DATE
ORDER BY "CreateDate"
LIMIT 10
FOR UPD ATE SKIP LOCKED


Обновление записей
UPDATE "Document"
SE T "CreateDate" = ...
...



Насколько понимаю логику работы SELECT FOR UPDATE SKIP LOCKED при паральленых вызовах
будут взяты не заблокированные записи.
Как понимаю проблема будет возникать при получении мин. значение CreateDate,
SELECT MIN("CreateDate")
FR OM "Document"


заблокированные записи будут пропущены и актуальное значение не получить.
Подскажите пож-ста можно как-то исправить эту проблему?
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот