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

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


person vava    schedule 09.07.2009    source источник


Ответы (1)


В InnoDB вставка в столбец с автоинкрементом приводит к блокировке таблицы. Выбор строки ДЛЯ ОБНОВЛЕНИЯ приводит к блокировке на уровне строки.

Поскольку вы не можете получить блокировку таблицы, если есть блокировки строк, UPDATE предотвращает INSERT до тех пор, пока его транзакция не будет зафиксирована.

person Andomar    schedule 09.07.2009