Как я могу reset auto_increment
поля? Я хочу, чтобы он снова начал отсчет с 1
.
Вы можете reset счетчик:
ALTER TABLE tablename AUTO_INCREMENT = 1
Для InnoDB вы не можете установить значение auto_increment
ниже или равно самому высокому текущему индексу. (цитата из ViralPatel):
Обратите внимание, что вы не можете reset счетчика на значение, меньшее или равное для тех, которые уже были использованы. Для MyISAM, если значение меньше чем или равно максимальному значению, которое в настоящее время находится в AUTO_INCREMENT столбец, значение reset до текущего максимума плюс один. Для InnoDB, если значение меньше текущего максимального значения в столбец, ошибка не возникает, и текущее значение последовательности не изменяется.
См. Как reset MySQL AutoIncrement с использованием значения MAX из другой таблицы? о том, как динамически получать приемлемое значение.
circular reference
ALTER TABLE tablename AUTO_INCREMENT = 1
Просто так:
ALTER TABLE tablename AUTO_INCREMENT = value;
ссылка: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
reset
означает установить его значение по умолчанию ... так что вы можете заменить «значение» на 1
SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;
Я думаю, что это сделает это
UPDATE
обновит все значения в столбце id
.
Существует очень простой способ с phpmyadmin под вкладкой "Операции", вы можете установить в параметрах таблицы автоинкремент на нужный номер.
Лучшее решение, которое сработало для меня:
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, и мне не нужно знать текущее максимальное значение! Таким образом, счетчик автоматического увеличения будет reset, и он автоматически запустится с максимального значения.
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'my_table' AND table_schema = DATABASE( ) ;
Есть хорошие варианты, приведенные в Как Reset Столбец автоинкремента MySQL
Обратите внимание, что ALTER TABLE tablename AUTO_INCREMENT = value;
не работает для InnoDB
Самые высоко оцененные ответы на этот вопрос рекомендуют "ALTER yourtable AUTO_INCREMENT = значение". Однако это работает только тогда, когда value
в alter больше текущего максимального значения столбца автоинкремента. Согласно документации MySQL:
Вы не можете reset счетчика на значение, меньшее или равное любому, что уже использовались. Для MyISAM, если значение меньше или равно до максимального значения, которое в настоящий момент находится в столбце AUTO_INCREMENT, значение reset до текущего максимума плюс один. Для InnoDB вы можете использовать ALTER TABLE... AUTO_INCREMENT = значение с MySQL 5.0.3, но если значение меньше текущего максимального значения в столбце, без ошибок и текущее значение последовательности не изменяется.
В сущности, вы можете только изменить AUTO_INCREMENT, чтобы увеличить значение столбца автоинкремента, а не reset до 1, поскольку OP запрашивает во второй части вопроса. Для опций, которые фактически позволяют вам установить AUTO_INCREMENT вниз от текущего максимума, посмотрите Reorder/reset автоматический прирост первичного ключа.
Добавление обновления, поскольку в MySQL 5.6 изменилась функциональность. Начиная с MySQL 5.6 вы можете использовать простой ALTER TABLE с InnoDB:
ALTER TABLE tablename AUTO_INCREMENT = 1;
Документы обновляются, чтобы отразить это:
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
Мое тестирование также показывает, что таблица НЕ скопирована, значение просто изменилось.
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.
Обратите внимание, что все поля в таблице будут пересчитаны и будут иметь другие идентификаторы!!!.
Вы также можете использовать таблицу синтаксиса TRUNCATE
следующим образом:
TRUNCATE TABLE table_name
BEWARE!! TRUNCATE TABLE your_table
будет удалять все в your_table
!!
TRUNCATE
также удалит ВСЕ ваши строки в указанной таблице!
Вы можете просто обрезать таблицу до reset последовательности
TRUNCATE TABLE TABLE_NAME
это для пустой таблицы:
ALTER TABLE `table_name` AUTO_INCREMENT = 1;
Если у вас есть данные, но вы хотите его убрать, я рекомендую использовать это:
ALTER TABLE `table_name` DROP `auto_colmn`;
ALTER TABLE `table_name` ADD `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`);
Счетчик автоматического приращения для таблицы может быть (повторно) установлен двумя способами:
Выполняя запрос, как и другие, уже объясненные:
ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;
Использование инструмента Workbench или другого средства визуального проектирования баз данных. Я покажу в Workbench, как это делается - но это не должно сильно отличаться в другом инструменте. Щелкните правой кнопкой мыши нужную таблицу и выберите Alter table
в контекстном меню. Внизу вы можете увидеть все доступные параметры для изменения таблицы. Выберите Options
, и вы получите эту форму:
Затем просто установите желаемое значение в поле Auto increment
, как показано на изображении.
Это будет в основном выполнять запрос, показанный в первом варианте.
Я попытался изменить таблицу и установить auto_increment в 1, но это не сработало. Я решил удалить имя столбца, которое я увеличивал, затем создаю новый столбец с вашим предпочтительным именем и установим, чтобы новый столбец увеличивался с самого начала.
Пожалуйста, используйте ниже код:
ALTER TABLE tablename AUTO_INCREMENT = 1
Лучший способ - удалить поле с AI и добавить его снова с помощью AI, работает для всех таблиц
Чтобы обновить последний плюс один id
ALTER TABLE table_name AUTO_INCREMENT =
(SELECT (id+1) id FROM table_name order by id desc limit 1);
Я предлагаю вам перейти в Query Browser и сделать следующее:
Auto_increment должен reset к одному, как только вы введете новую строку в таблицу.
Я не знаю, что произойдет, если вы попытаетесь добавить строку, в которой значение поля auto_increment уже существует.
Надеюсь на эту помощь!
Ниже код работает для меня
Alter TABLE employee AUTO_INCREMENT = 5;
версия - 5.7.13
Двигатель - innodb
TRUNCATE TABLE yourTableName;