Как защититься от мультизапросов (Charles)?
Транзакции и блокировка строк. Точка.
https://ru.wikipedia.org/wiki/Уровень_изолированно...
https://dev.mysql.com/doc/refman/8.0/en/innodb-tra...
Вам вроде нужен самый сильный уровень изоляции транзакций, SERIALIZABLE.
Более сложный, но более высокопроизводительный способ — SELECT FOR UPDATE.
https://dev.mysql.com/doc/refman/8.0/en/innodb-loc...
Тут уровень изолированности транзакций не важен, поскольку вы сами выбираете, какую строку как изолировать.
Либо составлять атомарный запрос, который не выполнится при нарушении каких-либо условий, либо использовать блокировки таблиц.