Нет, это не гарантировано.
Например, что, если вы запускаете этот (злой) код до вашего примера:
mmap( ( void *) 0, ( size_t ) 4096, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0 );
Это отображает анонимную страницу с чтением / write на адрес 0
.
Вы можете быть осторожным с другими таблицами, используя этот первичный ключ в качестве внешнего ключа
SET @count = 0;
UPDATE table SET table.id = @count:= @count + 1;
, это обновит столбец id
таблицы table
... тогда вам нужно будет сбросить auto_increment:
ALTER TABLE table AUTO_INCREMENT = 1;
Сбрасывает следующий id как MAX(id)+1
из docs :
Чтобы изменить значение счетчик AUTO_INCREMENT, который будет использоваться для новых строк, выполните следующее:
ALTER TABLE t2 AUTO_INCREMENT = value;
Вы не можете сбросить счетчик на значение, меньшее или равное тому, которое уже было использовано. Для MyISAM, если значение меньше или равно максимальному значению в настоящее время в столбце AUTO_INCREMENT, значение сбрасывается до текущего максимума плюс один
blockquote>