Поставил тэг laravel так как возможно это относится к нему.
$user = User::find($userId);
DB::raw('LOCK TABLES users WRITE');
if (User::count() == 1) {
abort(403, "Can't delete last user");
}
sleep(10); //do some stuff
$user->delete();
DB::raw('UNLOCK TABLES;');
В примере выше, если залогиниться под двумя разными последними юзерами в разных браузерах
и инициировать удаление, то они удалят друг друга.
Задача не допустить возможности удаления всех юзеров
Основная задача для меня - разобраться как работать с локами.
В моем понимании, второй запрос должен был застыть на User::count() и ждать пока не выполниться первый, но он этого не делает