Если вы обновите флаг ожидания в то же время, когда обнаружите двух игроков, с которыми хотите встретиться, все остальные запросы увидят это обновление. (Это, вероятно, следует сделать в хранимой процедуре, чтобы сократить время между запросами, в которых вы ищете ожидающего проигрывателя, и затем обновить их статус.) Если два запроса пытаются изменить одну и ту же строку на точно в то же время, один из них потерпит неудачу, так как строка должна быть заблокирована для обновления.
Я не уверен, что MySQL сгенерирует исключение взаимоблокировки или нет.
Убедитесь, что у вас есть хорошая обработка исключений в вашем клиентском приложении. Если вы получили исключение из этой операции, указывающее, что обновление не удалось, попробуйте еще раз. Возможно, вы захотите сгенерировать тест, который намеренно вызовет состояние, о котором вы беспокоитесь, и убедитесь, что ваше исправление работает должным образом.
Единственный способ, которым я ожидал бы, это произойдет, если вы используете параметризованные запросы и должны выполнить отдельные запросы, чтобы найти совпадение, а затем обновить флаги ожидания. Используйте сохраненный процесс, делайте все это сразу на сервере и наслаждайтесь повышенной стабильностью и спокойствием.