Когда пользователь после запуска
базы данных осуществляет первую
вставку в таблицу T, где определен
автоинкрементный столбец, и
пользователь не предоставляет
конкретного значения для этого
столбца, InnoDB выполняет SELECT
MAX(auto-inc-column) FROM T, затем
присваивает это значение,
увеличенное на единицу, столбцу, и
автоматически увеличивает
счетчик таблицы. Эту
последовательность действий мы
называем инициализацией счетчика
автоматического увеличения для
таблицы T.
Ту же последовательность действий InnoDB выполняет и для инициализации автоинкрементного счетчика вновь созданной таблицы.
Обратите внимание: если пользователь указывает при вставке значение автоинкрементного столбца 0, то InnoDB обрабатывает строку так, как будто значение не было указано.
Если после инициализации автоматического увеличения счетчика пользователь вставляет строку, в которой он явно указывает значение столбца, и это значение превышает текущее значение счетчика, то счетчик устанавливается в указанное значение столбца. Если пользователь явно не указывает значение, то InnoDB увеличивает счетчик на единицу и присваивает столбцу это новое значение.
При присвоении значений из счетчика механизм автоматического увеличения обходит блокировку и управление транзакциями. Вследствие этого могут возникнуть пропуски в последовательности чисел в случае, если производится откат транзакций, которые получили номера из счетчика.
Для случаев, когда пользователь присваивает столбцу отрицательное значение или если значение превысит максимальное целое число, которое может храниться в переменной целочисленного типа, поведение механизма механического увеличения не определено.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
