Здравствуйте. Подскажите, как корректно выбрать из БД записи в условиях конкурентного доступа, установить им флаг "в обработке" и вернуть результат, кому этот флаг установился. Сейчас делаю так, но не уверен, правильно ли полагаться на время модификации поля, ведь операция UPDATE может занять больше 1 секунды.
START TRANSACTION;
UPDATE `list` a INNER JOIN
(SELECT id FROM `list` WHERE `processing` = 0 LIMIT 10 FOR UPDATE) b
ON a.id = b.id SET `processing` = -1;
SELECT * FROM `list` WHERE `updated_at`=NOW() AND `processing`=-1;
COMMIT;