Этот ответ связан с его вопросом: я знаю, должна быть новая тема, но неважно.Пожалуйста, не понизьте просто за это.
Например, вы можете создать таблицу Order_image_lock (идентификатор галереи (первичный ключ), start_time).
Создание 3 методов / sprocs: GetLock, CheckLock, DropLock.
Когда вы хотите изменить порядок портфеля, вы вызываете GetLock, который вставляет (gallary_id, sysdate).
Если это работает, вы можете продолжить.Если это не сработает на ПК, кто-то еще переупорядочивает, поднять исключение.
Когда вы будете готовы к переупорядочению, вызовите CheckLock, чтобы увидеть, сохраняется ли ваша блокировка (вы поймете, почему), если она у вас есть, обновите переупорядоченные значения, если нет, перейдите к GetLock.
Когда вы закончите, DropLock удаляет запись.
Серверный процесс может очистить таблицу для блокировок, возраст которых превышает x минут.Для тех, кто отключен или тех, кто покидает экран и идет на обед.
Добавьте в эту таблицу также столбец user_id, чтобы вы могли сообщать, у кого есть блокировки, которые может захотеть другой пользователь.
Это будет масштабироваться намного лучше, чем на самом деле блокировка строк.некоторые базы данных имеют ограниченное количество блокировок, что заставляет их выполнять «эскалацию блокировки», когда множественные блокировки строк преобразуются в блокировку страниц, пока не будет слишком много блокировок страниц и не преобразованы в блокировку таблиц ... вам нужно проверить, какваши RDBM работают с большими объемами блокировки ... если вы планируете масштабировать.