2010-11-28 3 views
1

Если у вас есть пара таблиц в mysql, с внешними ключами ans и некоторыми счетчиками с автоматическим приращением с некоторыми пробелами (записи были удалены в «середине» таблица), есть ли простой способ «исправить» счетчики, чтобы не было никакого пробела?Как «сбросить» счетчик автоинкремента в mysql

Таким образом, с идентификатором = {1,10,11,40}, чтобы перейти к ID = {1,2,3,4}

Thx.

+1

Вам не нужно это делать. – Bozho 2010-11-28 18:59:26

+0

Вполне даже ваш автоинкремент ** НЕ ** в последовательном порядке – ajreal 2010-11-28 18:59:44

ответ

3

Если вы просто обновите ключи, вы рискуете нарушить ссылочную целостность. Поэтому нет, я бы сказал, что, не написав часть программного обеспечения, которая просматривает каждую запись и обновляет идентификаторы, также обновляя эти объекты с помощью внешних ключей, указывающих на каждую запись, это непростая задача «одной команды».

Также учитывайте, что внешние потребители ваших данных могут иметь указатели на вашу информацию, поэтому вам нужно подумать о влиянии простое изменение ключей произвольно.

И наконец, в чем причина, по которой вы хотите иметь непрерывное, бесщелевое назначение клавиш? обычно не проблема иметь пробелы или «странные» значения ключей. Пока ключи действительно уникальны для каждой записи, вам лучше оставить их такими, какие они есть, независимо от их значения или последовательности.

1

Если вы усекаете стол, это приведет к сбросу счетчика. Однако, если у вас уже есть строки, это не очень хорошая идея, чтобы вернуть его обратно в 0, поскольку у вас будут дубликаты идентификаторов.

2

Если это НЕ приложение, и вы просто хотите, чтобы ваши строки выглядели красиво, удалите столбец и создайте новый (конечно, с установкой AUTO INCREMENT).

В реальной практике вы не должны ожидать, что ваши идентификаторы строк будут последовательными.

0

Вы можете сбросить идентификаторы с помощью ALTER TABLE tblname AUTO_INCREMENT = 1, но это работает только с пустыми таблицами.

Вы можете создать дамп таблицы без идентификаторов, удалить все записи и использовать эту команду, а затем восстановить данные.

Обратите внимание, что это нарушит целостность ссылок.

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