7.5.11.5 Как работают автоинкрементные столбцы в InnoDB
Когда пользователь после запуска базы данных осуществляет первую вставку в
таблицу T, где определен автоинкрементный столбец, и пользователь не
предоставляет конкретного значения для этого столбца, InnoDB выполняет
SELECT MAX(auto-inc-column) FROM T
, затем присваивает это значение,
увеличенное на единицу, столбцу, и автоматически увеличивает счетчик
таблицы. Эту последовательность действий мы называем инициализацией
счетчика автоматического увеличения для таблицы T
.
Ту же последовательность действий InnoDB выполняет и для инициализации
автоинкрементного счетчика вновь созданной таблицы.
Обратите внимание: если пользователь указывает при вставке значение
автоинкрементного столбца 0, то InnoDB обрабатывает строку так, как
будто значение не было указано.
Если после инициализации автоматического увеличения счетчика пользователь
вставляет строку, в которой он явно указывает значение столбца, и это
значение превышает текущее значение счетчика, то счетчик устанавливается в
указанное значение столбца. Если пользователь явно не указывает значение,
то InnoDB увеличивает счетчик на единицу и присваивает столбцу это новое
значение.
При присвоении значений из счетчика механизм автоматического увеличения
обходит блокировку и управление транзакциями. Вследствие этого могут
возникнуть пропуски в последовательности чисел в случае, если производится
откат транзакций, которые получили номера из счетчика.
Для случаев, когда пользователь присваивает столбцу отрицательное значение
или если значение превысит максимальное целое число, которое может
храниться в переменной целочисленного типа, поведение механизма
механического увеличения не определено.