mysql - create - sql insert auto_increment




Как сбросить AUTO_INCREMENT в MySQL? (14)

ALTER TABLE tablename AUTO_INCREMENT = 1

Как я могу сбросить AUTO_INCREMENT поля? Я хочу, чтобы он снова начал отсчет с 1 .


Вот мое решение, но я не буду советовать это делать, если ваш столбец имеет ограничения или подключен как внешний ключ к другим таблицам, так как он будет иметь плохие последствия или даже не будет работать.

> Сначала: отбросьте столбец

ALTER TABLE tbl_name DROP COLUMN column_id

> Во-вторых: воссоздайте столбец и установите его как FIRST, если вы хотите, чтобы он был первым столбцом, который я предполагаю.

ALTER TABLE tbl_access ADD COLUMN `access_id` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST

Это хорошо работает!


Вы можете сбросить счетчик с помощью:

ALTER TABLE tablename AUTO_INCREMENT = 1

Для InnoDB вы не можете установить значение auto_increment ниже или равно самому высокому текущему индексу. (цитата из ViralPatel ):

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

См. Как сбрасывать MySQL AutoIncrement с использованием значения MAX из другой таблицы? о том, как динамически получать приемлемое значение.


Вы также можете использовать таблицу синтаксиса TRUNCATE следующим образом: TRUNCATE TABLE table_name

BEWARE !! TRUNCATE TABLE your_table удалит все в вашей your_table !!


Есть хорошие варианты, приведенные в ViralPatel

Обратите внимание, что ALTER TABLE tablename AUTO_INCREMENT = value; не работает для InnoDB


Лучшее решение, которое сработало для меня:

ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;

Он работает быстро, работает с innoDB, и мне не нужно знать текущее максимальное значение! Таким образом счетчик автоматического прироста будет сброшен, и он начнет автоматически с максимального значения.



Самые высокие ответы на этот вопрос рекомендуют «ALTER yourtable AUTO_INCREMENT = значение». Однако это работает только тогда, когда value в alter больше, чем текущее максимальное значение столбца автоинкремента. Согласно документации MySQL :

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

По существу, вы можете только изменить AUTO_INCREMENT, чтобы увеличить значение столбца автоинкремента, а не сбросить его на 1, поскольку OP запрашивает во второй части вопроса. Для опций, которые фактически позволяют вам установить AUTO_INCREMENT вниз от его текущего макс, посмотрите на первичный ключ автоматического изменения приоритета / сброса .


Счетчик автоматического увеличения для таблицы может быть (повторно) задан двумя способами:

  1. Выполняя запрос, как и другие, уже объяснили:

    ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;

  2. Использование инструмента Workbench или другого средства визуального проектирования баз данных. Я покажу в Workbench, как это делается - но это не должно сильно отличаться в другом инструменте. Щелкните правой кнопкой мыши нужную таблицу и выберите Alter table из контекстного меню. Внизу вы можете увидеть все доступные параметры для изменения таблицы. Выберите « Options и вы получите следующую форму:

    Затем просто установите желаемое значение в поле Auto increment как показано на изображении. Это будет в основном выполнять запрос, показанный в первом варианте.


Чтобы обновить последний плюс один идентификатор

 ALTER TABLE table_name AUTO_INCREMENT = 
 (SELECT (id+1) id FROM table_name order by id desc limit 1);

Я попытался изменить таблицу и установить auto_increment в 1, но это не сработало. Я решил удалить имя столбца, которое я увеличил, а затем создаю новый столбец с вашим предпочтительным именем и установим, чтобы новый столбец увеличивался с самого начала.


Я предлагаю вам перейти в Query Browser и сделать следующее:

  1. Перейдите к схемам и найдите таблицу, которую вы хотите изменить.
  2. Щелкните правой кнопкой мыши и выберите команду создания копии.
  3. Откройте вкладку результатов и вставьте инструкцию create.
  4. Перейдите к последней строке инструкции create и найдите Auto_Increment = N, (где N - текущее число для поля auto_increment).
  5. Замените N на 1.
  6. Нажмите ctrl + enter .

Auto_increment должен быть сброшен до одного, как только вы вводите новую строку в таблицу.

Я не знаю, что произойдет, если вы попытаетесь добавить строку, в которой значение поля auto_increment уже существует.

Надеюсь, эта помощь!


ALTER TABLE news_feed DROP id

ALTER TABLE news_feed ADD  id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)

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

Обратите внимание, что все поля в таблице будут пересчитаны и будут иметь другие идентификаторы !!!.


ALTER TABLE tablename AUTO_INCREMENT = 1






auto-increment