У меня возникла проблема обновить список идентификационных номеров снова, начиная с 1,2,3,4,5. Поскольку я удалил несколько записей, когда тестировал команды sql. Не могли бы вы помочь в том, как сделать этот столбец идентификатора снова, начиная с 1.
Я мог бы просто указать номер идентификатора, однако, если я это сделаю, то, когда я буду вводить новую запись, он снова начнется с предыдущего числа, которое было 66.
ID Name 1 A 32 B 34 C 35 D 55 E 66 F
С уважением
Спасибо
Сначала обрезайте таблицу, а затем выполните ее
ALTER TABLE tablename AUTO_INCREMENT = 1
Вы должны усечь таблицу, чтобы ее правильно отрегулировать, а не просто использовать таблицу изменений
(tldr; обычно лучше не беспокоиться о плотности или последовательном порядке столбца автоинкремент.)
Невозможно использовать AUTO_INCREMENT для автоматического заполнения значений, меньших MAX (ID).
Однако идентификатор автоматического увеличения может быть сброшен, если существующие идентификаторы обновлены. Фаза уплотнения требуется, потому что MySQL не позволяет «заполнить пробелы» через столбец автоматического увеличения .
Сопоставьте существующие идентификаторы , например:
SET @i := 0; UPDATE t id = @i := (@i+1)
Важно: убедитесь, что все реляционное использование идентифицировано в виде отношений внешнего ключа с CASCADE ON UPDATE, прежде чем это будет сделано, или данные могут стать необратимыми.
Назначьте автоидентификатор с максимальным значением 1 ID после уплотнения:
ALTER TABLE t AUTO_INCREMENT = (SELECT MAX(id) FROM t)
1 В документации AUTO_INCREMENT в ALTER TABLE :
Вы не можете сбросить счетчик на значение, меньшее или равное значению, которое в настоящее время используется. Если значение меньше или равно максимальному значению, находящемуся в настоящее время в столбце AUTO_INCREMENT, значение сбрасывается до текущего максимального столбца AUTO_INCREMENT значение плюс один.
Правило означает, что невозможно установить идентификатор инкремента ниже, чем уже используемый ID; кроме того, при назначении вручную значения вручную автоматически повышается значение AUTO_INCREMENT.
Самый простой (и самый быстрый) способ – удалить столбец и добавить его обратно. Обновление столбца может испортить индексы или сделать беспорядок со значениями. Потрясение всей таблицы не имело смысла. Но помните, что если другие столбцы относятся к этим идентификаторам, вы можете повредить свое приложение.