Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2023, 03:03   #1
polin11
Форумчанин
 
Регистрация: 07.06.2015
Сообщений: 164
По умолчанию Логика работы SELECT FOR UPDATE

Использую СУБД PGSQL.

Нужно получить мин. значение CreateDate из таблицы документ
Код:
SELECT MIN("CreateDate")
FROM "Document"
если минимальная дата < текущей в цикле вешается транзакция и пересчитывается поле CreateDate, достаю записи
таким запросом:
Код:
SELECT *
FROM "Document"
WHERE "CreateDate" < NOW()::DATE
ORDER BY "CreateDate"
LIMIT 10
FOR UPDATE SKIP LOCKED
Обновление записей
Код:
UPDATE "Document"
SET "CreateDate" = ...
...

Насколько понимаю логику работы SELECT FOR UPDATE SKIP LOCKED при паралельных вызовах
будут взяты не заблокированные записи.
Как понимаю проблема будет возникать при получении мин. значение CreateDate,
Код:
SELECT MIN("CreateDate")
FROM "Document"
заблокированные записи будут пропущены и актуальное значение не получить.
Подскажите пож-ста можно как-то исправить эту проблему?
polin11 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] UPDATE и SELECT ssm116 SQL, базы данных 2 27.07.2017 12:45
Использование операторов SELECT, DELETE и UPDATE в одном запросе в PDO Dante5 SQL, базы данных 4 19.09.2015 11:41
как сделать UPDATE после SELECT? RusikOk SQL, базы данных 5 31.07.2014 16:05
Сделать select перед update DimaNIKul SQL, базы данных 19 20.06.2014 00:20
Написание процедур select, delete, update, insert (с выходным параметром) NatRez SQL, базы данных 4 21.10.2012 19:54