Как получить запись из таблицы так, чтобы никто в это же время её не получил?
Всем привет! Нужно получить запись из таблицы и после обработки данных удалить эту запись.
Как можно гарантировать, что в процессе обработки (5 секунд), другой клиент не получит эту же запись и не начнет обрабатку данных?
dollar, Пробовал, такой способ работает только внутри текущего скрипта. я устанавливал блокировку, выполнял sleep(30) и в это время на другой странице браузера открывал этот же скрипт но без sleep... итог - данные успешно получаются из таблицы, включая обрабатываемую запись
Алексей Коновалов, ладно, перефразирую: вы решаете проблему на слишком низком уровне, для этого не предназначенном. Поэтому неизбежны неуклюжие костыли. Просто поднимитесь выше и решайте проблему не самой базой данных, а обращением к ней. Созданием дополнительной таблицы с очередью обрабатываемых данных, например, как вам уже посоветовали ниже. Если получение данных будет идти только через код, работающий с очередью - проблема будет решена естественным и надежным способом.