У меня есть две таблицы:
игры:
ставки:
- id INT AI primary;
- game_id INT чужой на games.id;
Далее я создаю одну строку в таблице games
с id
, равным 1
. То, что я пытаюсь сделать, - это ограничитель параллелизма, чтобы ограничить количество транзакций, которые так или иначе связаны с этой конкретной игрой, и это дочерний процесс с использованием инструментов mysql. Итак, я нашел mysql lock for update
и lock in share mode
и попытался использовать их оба таким образом:
Открыл один терминал и набрал:
USE test;
START TRANSACTION;
SELECT * FROM `games` WHERE `id` = 1 FOR UPDATE;
Затем открыл другой терминал и набрал то же самое, ожидая, что он будет ждать, пока первая транзакция не будет зафиксирована / откатана, как описано в документации, но вместо этого я получил реальные результаты (игра с таким идентификатором). То же самое происходит, когда используется LOCK IN SHARE MODE
.
Что мне здесь не хватает?