У меня есть таблица имен MySQL Product для классифицированного сайта, product_id - это поле AUTO_INCREMENT bigint (20).
Текущее значение AUTO_INCREMENT - 224143.
Клиент хочет, чтобы он перезапустился с 1. Но в этой таблице есть 7000 существующих STARTING с prduct_id 210235 до 224143. Пользователь может управлять своими элементами, используя его идентификатор, я не могу изменять, восстанавливать идентификаторы, но хочу перезапустить следующий АВТОИНКРЕМЕНТ с 1 и сохранить существующую запись как есть.
Заранее спасибо.
Вы не можете. MySQL автоматически установит значение auto_increment на MAX(column)+1
даже если вы использовали alter table tbl auto_increment = 1
. И это ограничение имеет очень веское объяснение - дублирование ключей никогда не заканчивается хорошо.
Во-первых, я считаю, что это ужасная идея, и если вы сделаете это, вы только навлечете на себя неприятности.
Во-вторых, я не уверен, что перезапустить auto_increment
счетчик обратно к 1, так как MySQL предотвратит это по уважительным причинам.
Я думаю, что лучше всего для получения желаемого поведения было бы экспортировать данные в файл (mysql -Bse "select * from table" экспортирует вкладку, разделенную по умолчанию) и импортируйте данные в новую таблицу, либо переписав идентификатор number с помощью awk / perl или повторно импортируйте данные без столбца идентификатора и позвольте ему auto_increment с 1 в новой таблице. Имейте в виду, что вам нужно будет исправить любые отношения, которые другие таблицы имеют к идентификационному номеру этой таблицы.