Доброй ночи! Есть таблица, в ней есть статусы. всего возможны 3

статусы: pending, in work, failed
Раз в минуту берется 200 записей со статусом pending и у них обновляется статус на in work

При этом, в любой момент может придти insert on duplicate key`и засобачить статус на `pending. У него есть if на статус.

Собсна, вопрос:
Я хочу залочить таблицу, выбрать 200 записей, обновить им статус и разблочить. В таком случае никто не заденет статус.

Как жить :(?

13 ответов

10 просмотров

У тебя вопрос - это не вопрос

First-Last Автор вопроса
Ilya Zviagin
У тебя вопрос - это не вопрос

Оке, тогда уточню: как мне сделать лок в данном случае? Видел select for update, но не знаю как ему сказать обновить только те, которые взял из селекта

First-Last Автор вопроса
Ilya Zviagin
Взял куда?

begin; select * from foo where status = 'pending' limit 2 for update; update foo set status = 'in work'; -- Как вот здесь обновить только те, что я взял выше? commit;

First Last
begin; select * from foo where status = 'pending' ...

Ты же выбрал определённые записи, вот их и UPDATe- и

Ilya Zviagin
Ты же выбрал определённые записи, вот их и UPDATe-...

Они будут уже заблокированы для выполнения update

First-Last Автор вопроса
Ilya Zviagin
Ты же выбрал определённые записи, вот их и UPDATe-...

Спасибо большое за разъянение. Затуп как раз в том, как их обновить :( Гуглил, но не нашел, честно :(

First Last
Спасибо большое за разъянение. Затуп как раз в том...

Ты выбрал данные этих записей? Знаешь их?

First Last
begin; select * from foo where status = 'pending' ...

begin; select * from foo where status = 'pending' limit 2 for update; update foo set status = 'in work' where status = 'pending'; commit;

First Last
begin; select * from foo where status = 'pending' ...

Что вы там курите, зачем вам select for update здесь непонятно

Похожие вопросы

Обсуждают сегодня

вопрос: кто как решает вопрос с динамической подгрузкой скриптов для отдельных страниц с включенным turbo router?
Sergei Toroptsev
25
как через magic forms посылать мультиязычные имейлы?
Sergei Toroptsev
4
Это что теперь, любой бот сможет принимать платежи без ебли с юр лицами?
Lencore
8
Не догоняю немного каким боком тут эппл Вот есть веб (мини) апп, который по факту веб сайт, просто в телеге веб вью и если там оплата, то нежно вот эти приседания?
e\\/gen
7
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Друзья, за кем?
Magic
12
Всем ку, есть у кого нибудь авторег акков тг сразу в сессию pyrogram?
Rick Sanchez
4
ого, спасибо Никит, ты как всегда кладезь нужной инфы! Сейчас пойду копаться, а мне релиз создать как и версию самого плагина? типа 1.0.8?
Alex Blaze
9
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
@NativeCoder хочет кикнуть @lautsevich из чата. Согласны? Информация по переезду из 🇺🇦 в 🇨🇦
Banof
2
Карта сайта