Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: vavaОтветов: 1

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

innodblocking

Ответы

Ответ 1 · рейтинг 2 · Andomar

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы