2016-09-22 2 views
-1

У меня есть таблица с 3000 записей. Я произвольно выбираю 25 из тех, которые будут перенесены в другую таблицу. Как только это будет сделано, я хочу, чтобы идентификаторы (которые назначены AUTO_INCREMENT и являются первичным ключом) в исходной таблице, чтобы быть в последовательности, чтобы я мог выполнить следующую итерацию. Как мне это сделать?Как переупорядочить идентификатор AUTO_INCREMENT в MySQL после удаления нескольких записей?

+0

поэтому записи из исходной таблицы удаляются после их смещения? –

+3

Не надо. Этот вопрос задают, наверное, каждый день здесь. Ответ: «Не делай этого». В качестве альтернативы вы * можете * создать новую таблицу с новым PK, который автоматически увеличивает и переносит все остальные записи в эту таблицу. Но почему*? Что заставляет вас думать, что первичный ключ * нуждается в * всегда быть совершенно последовательным? (Подсказка: это не так) – David

+1

Вы не должны. Первичные ключи могут быть внешними ключами в другой таблице и также должны быть изменены. Если вы думаете, что вам нужно это сделать, вы делаете что-то неправильно. – AbraCadaver

ответ

0

Мы не можем изменить значение auto_increment на значение, отличное от текущего максимального значения.

Единственный другой способ изменить его на значение чуть выше текущего максимального значения - это вручную изменить значение счетчика AUTO_INCREMENT на максимальное (значение) +1.

Поэтому я предполагаю, что вы должны заказать записи по возрастанию по существующему идентификатору после удаления 25 записей и вручную установить значение id каждой записи в соответствии с увеличивающейся переменной и в конце установить значение счета AUTO_INCREMENT как значение переменной в конце +1.

Пример:

ALTER TABLE Т SET AUTO_INCREMENT = some_value;

Хотя рекомендуется оставлять AUTO_INCREMENT в одиночку и избегать всего этого, если это делается только ради того, чтобы сделать идентификаторы великолепными, и нет другой вероятной причины.

+1

Это 1% от решения. Остальные 99% отслеживают все ссылки на эти значения и корректируют их, а также очищают возникающий беспорядок, который неизбежно произойдет. – tadman

Смежные вопросы