После нескольких тестов я пришел к выводу, что мне следует изменить код следующим образом:
SET @code = 'a123';
SET @mid = NULL;
SELECT @mid := id, @code := code FROM my_table WHERE code = @code;
UPDATE my_table SET number = (number + 1) WHERE id = @mid;
Я должен использовать «id» вместо «code» после «WHERE» в транзакции UPDATE
также я должен снова установить @code в транзакции SELECT (почему? Я не знаю!)
Этот код работает правильно, предыдущий код не работает правильно, и я не знаю причина!