MySQL AUTO_INCREMENT Счетчик дает некоторые проблемы - PullRequest
0 голосов
/ 05 июня 2011

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

например, я вставил записи со следующими идентификаторами

1,2,3,4,5,6

при удалении 5,6 между и в следующий раз, пока я вставляю другую строку, она продолжается с 7. в то время как я хочу, чтобы она продолжалась с 5. она просто не сбрасывает счетчик auto_increment, я попытался изменить таблицу, выполнив запрос этой команды ALTER TABLE amenities AUTO_INCREMENT = 1;, но все-таки делаетне похоже на работу.

Вот пример DDL одной из таблиц, которые я получил от phpMyAdmin Export.

CREATE TABLE `amenities` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

1 Ответ

2 голосов
/ 05 июня 2011

Это не так, как AUTO_INCREMENT работает в MySQL или любой другой базе данных.AUTO_INCREMENT всегда идет вперед.Никогда не приспосабливайтесь, чтобы заполнить пробелы.

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

...