2015-10-05 2 views
0

Если у меня есть 100 записей в таблице с первичными ключами, которые являются случайными, например. 1, 552 и т. Д. Я хочу сохранить эти ID, но я хочу начать добавлять новые записи. Лучше всего только запустить индекс автоматического инкремента с наивысшим значением первичного ключа + 1 в таблице?mySQL запускает автоматическое приращение после начальных записей

Приветствия

+0

Да, это хороший подход. –

+0

Хорошо, гипотетически, если бы я добавил запись, и мой индекс автоматического инкремента был таким же, как и существующий индекс первичного ключа, будет ли он использовать этот индекс? –

+0

. , , Я не совсем понимаю ваш комментарий, но автоматическое увеличение и первичные ключи - это две разные вещи (которые часто являются свойствами одного и того же столбца). –

ответ

1

Вы должны были бы получить максимальное значение столбца и изменить таблицу для установки следующего значения AUTO_INCREMENT:

SELECT MAX(ID) + 1 FROM table_name INTO @maxauto; 
ALTER TABLE table_name AUTO_INCREMENT = @maxauto; 

Поскольку таблица имеет поле auto_increment и значение генерируется от него, обработка значения id через function будет сложной задачей. В другом случае вы можете получить неиспользованный id s из таблицы и использовать его как id.

+0

Если вы используете этот подход, обязательно запустите оба запроса внутри одной транзакции. В противном случае вы рискуете внести изменения в таблицу другим пользователем или процессом между выполнением первого ('SELECT') и второго (' ALTER') запросов. –