Почему я не могу вставить новую строку в частично заблокированную таблицу в MySQL 5 InnoDB? - PullRequest
2 голосов
/ 09 июля 2009

В руководстве сказано, что InnoDB имеет блокировку на уровне строк, так почему, если я выберу некоторые строки с помощью оператора FOR UPDATE, это не позволит мне вставить новую строку в эту таблицу? В конце концов, новая строка не должна быть заблокирована, она не была выбрана.

1 Ответ

2 голосов
/ 09 июля 2009

В InnoDB вставка в столбец с автоинкрементом приводит к блокировке таблицы. Выбор строки FOR UPDATE приводит к блокировке уровня строки.

Поскольку вы не можете получить блокировку таблицы, если есть блокировки строк, ОБНОВЛЕНИЕ предотвращает ВСТАВКУ, пока ее транзакция не будет зафиксирована.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...