Традиционно это делается с помощью логического столбца locked
для записи в базе данных, которая помечена соответствующим образом.
Функция блокировки такого типа заключается в том, что блокировка должна быть снята, и обстоятельства могут помешать этому произойти естественным образом (сбои системы, глупость пользователя, потеря сетевых пакетов и т. Д. И т. Д. И т. Д.). Вот почему вам нужно будет предоставить какой-нибудь метод ручной разблокировки и / или установить ограничение по времени (возможно, с помощью cron-задания?) На то, как долго можно заблокировать запись. Вы могли бы провести какой-то опрос AJAX, чтобы сохранить запись заблокированной, если браузер все еще открыт? В любом случае, вам, вероятно, было бы лучше убедиться, что данные в записи совпадают с данными, полученными при блокировке, прежде чем изменять их.
Это ограничение этого типа поведения особенно распространено в веб-приложениях, но справедливо для всего, что использует этот подход - Sage Line 50, например, является пагубным для него, мне регулярно приходится удалять файлы блокировки после машины / сбой приложения.