|
|
|
| Добрый день! Использовал механизм auto_increment в своей первой базе данных. Действительно, primary key автоматически увеличивается, но не так как я ожидал. Ключ не принимает значение, равное максимальному в столбце плюс 1. То есть, я добавил 5 записей в таблицу. получил значение ключа 5 - вроде все верно, затем я удалил 2 последние записи - у меня осталось в столбце primary key 1 , 2 и 3. Затем я добавил еще одну запись и вместо ожидаемого значения ключа 4, получил 6. Пришлось изменять значение вручную при помощи оператора UPDATE. Подскажите, что не так? | |
|
|
|
|
|
|
|
для: FallenAngel
(11.11.2011 в 20:10)
| | Все верно, AUTO_INCREMENT не гарантирует неразрывную последовательность значений, он гарантирует уникальные значения. Более того, тот подход который используется более универсальный и жизнеспособный, чем просто максимальное значение + 1. В базе данных могут оставаться ссылки на удаленные записи, если вы вместо старой записи подставляете новые данные, могут возникать заведомо ложные связи. Более того, такие ссылки за счет URL могут существовать в Интернет, если свою базу данных у вас имеется шанс привести в порядок, то заставить всех в Интернет убрать/переименовать ссылки не представляется возможным. Поэтому AUTO_INCREMENT назначает не просто уникальные значения, а те, которых еще никогда не было. | |
|
|
|
|
|
|
|
для: cheops
(11.11.2011 в 21:24)
| | Спасибо! | |
|
|
|
|
|
|
|
для: FallenAngel
(11.11.2011 в 20:10)
| | все работает как надо, вам только остается понять почему :)
для нумерации используйте отдельное поле если она нужна | |
|
|
|