Сброс MySQL auto_increment, когда большое количество уже существует? - PullRequest
5 голосов
/ 20 января 2011

У меня есть таблица с автоинкрементным столбцом.Мне нужно установить одну из строк на 1000 и больше никогда ее не трогать, но теперь, когда я установил ее на 1000, автоинкремент продолжает начинаться с 1001 и отказывается начинаться с 1. Есть ли способ обойти это?1001 *

Ответы [ 5 ]

7 голосов
/ 20 января 2011

Вы не можете:

Чтобы изменить значение счетчика AUTO_INCREMENT, который будет использоваться для новых строк, сделайте следующее:

ALTER TABLE t2 AUTO_INCREMENT = value;

Вы не можете сбросить счетчик до значения, которое меньше или равно значению, которое уже использовалось.Для MyISAM, если значение меньше или равно максимальному значению, которое в данный момент находится в столбце AUTO_INCREMENT, значение сбрасывается до текущего максимального плюс один.Для InnoDB, если значение меньше текущего максимального значения в столбце, ошибки не возникает и текущее значение последовательности не изменяется.

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

3 голосов
/ 20 января 2011

Простой и краткий ответ: вы не можете сделать это.

Если бы вы могли, что бы произошло, если бы вы начали автоинкремент с 1 и вставили 1000 строк?Последний не может быть вставлен из-за ошибки «duplicate key».

Если у вас должна быть предопределенная запись с идентификатором, который никогда не меняется и его легко запомнить, почему бы вам не использовать 0для этого?Или, если вам действительно нужно использовать 1000, в чем проблема, если другие столбцы начинаются с 1001?

1 голос
/ 30 августа 2013

Если у вас нет другого идентификатора строки с 1000, вы можете вставить строку в конец таблицы, а затем просто использовать команду обновления:

UPDATE  table.column SET id = 1000 WHERE id = current_id;

Предполагается, что id - это ваш столбец автоинкремента. И current_id должен быть заменен идентификатором, в который вставлена ​​строка.

0 голосов
/ 02 февраля 2014

Вы можете использовать следующие операторы:

UPDATE tbl SET id=1000 WHERE id=current_id;
ALTER TABLE tbl AUTO_INCREMENT=1001;
0 голосов
/ 31 мая 2012

Вы можете использовать MS Access, который ссылается на MySQL, как внешнюю таблицу, и вы можете изменить значение поля таблицы автоинкремента из MS Access с помощью копирования вставки из Excel (сначала вам нужно настроить значение автоинкремента в Excel).

...