Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Механизм auto_increment создает пропуски в нумерации
 
 автор: FallenAngel   (11.11.2011 в 20:10)   письмо автору
 
 

Добрый день! Использовал механизм auto_increment в своей первой базе данных. Действительно, primary key автоматически увеличивается, но не так как я ожидал. Ключ не принимает значение, равное максимальному в столбце плюс 1. То есть, я добавил 5 записей в таблицу. получил значение ключа 5 - вроде все верно, затем я удалил 2 последние записи - у меня осталось в столбце primary key 1 , 2 и 3. Затем я добавил еще одну запись и вместо ожидаемого значения ключа 4, получил 6. Пришлось изменять значение вручную при помощи оператора UPDATE. Подскажите, что не так?

  Ответить  
 
 автор: cheops   (11.11.2011 в 21:24)   письмо автору
 
   для: FallenAngel   (11.11.2011 в 20:10)
 

Все верно, AUTO_INCREMENT не гарантирует неразрывную последовательность значений, он гарантирует уникальные значения. Более того, тот подход который используется более универсальный и жизнеспособный, чем просто максимальное значение + 1. В базе данных могут оставаться ссылки на удаленные записи, если вы вместо старой записи подставляете новые данные, могут возникать заведомо ложные связи. Более того, такие ссылки за счет URL могут существовать в Интернет, если свою базу данных у вас имеется шанс привести в порядок, то заставить всех в Интернет убрать/переименовать ссылки не представляется возможным. Поэтому AUTO_INCREMENT назначает не просто уникальные значения, а те, которых еще никогда не было.

  Ответить  
 
 автор: FallenAngel   (11.11.2011 в 21:30)   письмо автору
 
   для: cheops   (11.11.2011 в 21:24)
 

Спасибо!

  Ответить  
 
 автор: Valick   (11.11.2011 в 21:31)   письмо автору
 
   для: FallenAngel   (11.11.2011 в 20:10)
 

все работает как надо, вам только остается понять почему :)
для нумерации используйте отдельное поле если она нужна

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования