@Coolam
Web-developer

Как очистить очередь id в базе данных?

Такая возникла проблема. У меня в таблице значение id стоят AUTO_INCREMENT => значения сами присваиваются. Когда я удаляю запись из БД, порядок id сохраняется. То есть, было 8 записей, 10 добавил, эти же 10 удалил. После такой манипуляции добавляю ещё запись, надеясь, что у неё будет id 9, но у неё id 19. Да, это нормальное поведение, но мне хотелось бы, чтобы запись имела id 9. Куда тыкнуть, чтобы заработало так, как хочу?
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
artloveyou
@artloveyou
ALTER TABLE tablename AUTO_INCREMENT = 9

Но надо знать номер последней записи.
Вообще лучше не трогать автоинкременты, а создать отдельный столбец в котором будет по порядку всё нумероваться. И перенумеровываться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Да, это нормальное поведение, но мне хотелось бы, чтобы запись имела id 9.
Вам не приходило в голову, что это нормальное поведение не просто так? На моей памяти это уже 5 или 6 раз когда приходится объяснять что "это жжж неспроста...", в 7 раз уже лениво, просто прими как данность что так должно быть.
Идиотский, но понятный даже чайникам пример - если это список пользователей, и ты удалил №9, а затем добавил нового с этим номером, у предыдущего пользователя могут остаться данные, которые к нему привязаны именно по этому номеру, и они (внезапно!) перепривяжутся к вновь созданному юзеру, что не есть хорошо. Механизм автоинкремента как раз гарантирует неповторяемость идентификаторов, для вот таких случаев.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы