Mysql перезапустить авто Int первичный ключ - PullRequest
2 голосов
/ 09 декабря 2011

Здравствуйте, возможно ли сохранить удаленный автоинкрементный первичный ключ в моей базе данных.Например,

У меня есть Name_ID

  • 1
  • 2
  • 3
  • 4

Если я удаляю первичный ключ 4 и вставляю снова, первичный ключ, который я вставил, должен быть равен четыре.

так.Имя 1 2 3 4 5


Я удалил первичный ключ 5 (Имя 1 2 3 4)


Я добавил, что первичный ключ данных должен быть снова 5, а не 6. СПАСИБО!

Ответы [ 3 ]

2 голосов
/ 09 декабря 2011

Как и в случае с другими комментариями и ответами здесь, я бы не рекомендовал это, особенно если на данные в столбце автоинкремента ссылаются извне, но вы можете установить следующий номер автоинкремента на определенное значение с помощью ALTER TABLE запроса

ALTER TABLE T_YourTable AUTO_INCREMENT=4

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

2 голосов
/ 09 декабря 2011

В сгенерированных автоматически полях всегда есть пробелы.

Что, если у вас есть таблица аудита или истории, в которой хранятся строки с ID = 4, ID = 5? Затем удалите их снова? Как вы различаете строки?

В вашем примере вы удалили только последнюю строку? Что вы удаляете ID = 1? Тогда что?

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

0 голосов
/ 09 декабря 2011

Почему?

Он предназначен только для уникального идентификатора.

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

Механизм заполнения пробелов будет сложным, медленным и сложным в обслуживании - и он не нужен.

...