Ваш первый оператор выполняет SELECT в таблице, поэтому транзакция получает блокировку чтения в одной строке. Вторая транзакция пытается получить блокировку записи в той же таблице (для всех строк, поскольку нет предложения WHERE
), но не может. Вам необходимо выдать команду COMMIT
(или ROLLBACK
) после SET @x = (...)
, чтобы она освободила блокировку чтения.
Вышеуказанное неверно. Я сохраняю этот пост только потому, что могут быть интересны следующие комментарии.