2013-12-18 2 views
1

Когда я удаляю последнюю строку в таблице MySQL, а затем вставляю новую, почему идентификатор все еще увеличивается, как если бы первые не были удалены? Есть ли способ предотвратить это, так что может быть, как будто исходной строки не было? Вот примерУдаление последней строки в таблице MySQL

Teachers 
id first_name 
0 joe 
1 mike 
2 jim 

Если удалить «джим», а затем вставить «боб», то идентификатор Боба будет 3, и не будет никакой записи с идентификатором 2.

+1

http://stackoverflow.com/questions/3132439/ mysql-auto-декрементирующее значение – Farce

+3

Вы действительно не должны относиться к себе с фактическими значениями, выделенными автоинкрементными идентификаторами –

+0

Прохладный id не перерабатывается. _you_ собирается отслеживать, если id = 1234 означает запись, которая была в базе данных 1 неделю назад, 4 дня назад или сейчас? – Wrikken

ответ

1

Удаление любой заданной строки не изменит текущее значение автоматического прироста.

Вы можете просмотреть текущее значение переменной автоматического приращения для таблицы, запустив

SHOW TABLE STATUS LIKE 'mytable'; 

И вы можете изменить значение автоматического приращения, запустив

ALTER TABLE 'mytable' AUTO_INCREMENT = '1234'; 
2

Поскольку ваш идентификатор Колонки настроен как автоинкрементный, и не может иметь такое же значение, если вы не указали это вручную.

+0

И хранит ли он последний вставленный идентификатор, а не последний существующий идентификатор? – mavsman

+0

Да! Id принимает следующий инкрементный –

0

вы также можете использовать ALTER TABLE tablename AUTO_INCREMENT = 2, если после удаления строки и перед ее вставкой новый, чтобы сделать инкремент ввода id на 2

0

вам нужно t о выполнении этой команды после каждой операции удаления, это будет сбросить auto_increment 1 ведьму будет установлено автоматически последний доступный идентификатор (2 в вашем примере)

ALTER TABLE table_name AUTO_INCREMENT = 1 
Смежные вопросы