В руководстве говорилось, что InnoDB имеет блокировку на уровне строк, так почему, если я выберу некоторые строки с помощью оператора FOR UPDATE
, он не позволит мне вставить новую строку в эту таблицу? Новую строку все-таки не нужно блокировать, она не была выбрана.
Почему я не могу вставить новую строку в частично заблокированную таблицу в MySQL 5 InnoDB?
Ответы (1)
В InnoDB вставка в столбец с автоинкрементом приводит к блокировке таблицы. Выбор строки ДЛЯ ОБНОВЛЕНИЯ приводит к блокировке на уровне строки.
Поскольку вы не можете получить блокировку таблицы, если есть блокировки строк, UPDATE предотвращает INSERT до тех пор, пока его транзакция не будет зафиксирована.
person
Andomar
schedule
09.07.2009