Я работаю над приложением, поддерживаемым экземпляром MySQL, и столкнулся со странным поведением, которое включает в себя то, что кажется "фантомными" вставками.
Учитывая таблицу с автоинкрементным целочисленным ключом, я выполняю следующее:
INSERT ... // generates ID 1
INSERT ... // generates ID 2
INSERT ... // generates ID 3
SELECT * // returns the set of elements 1 and 3
Похоже, что вторая вставка генерирует идентификатор и возвращает клиенту до того, как вставка завершена, поэтому я могу одновременно знать идентификатор и не иметь возможности выбирать данные. Это удивительно - я думаю, что вставка не вернется, пока не будет вставлена строка.
Можно ли сказать, что MySQL одновременно выделяет идентификатор и вставляет строку в одну атомарную операцию, так что, как только я узнаю идентификатор 2
, он гарантированно вернется из запроса выбора?