Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2012, 23:43   #1
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию auto_increment

У меня таблица и первое поле Первичный ключ с автоинкрементом. Например я создал 7 записей в таблице и удалю последнюю 7-ую, а потом вставлю новую запись на место той 7-ой, выдается в автоинкременте 0 и дальнейшие вставки невозможны с автоинкрементом. Только числа обязательно приходится вставлять в поле с ключом, как избежать этого и как сделать чтобы дальше продолжало считать вставляемые записи если одну строку из них удалено уже было?
kilogram вне форума Ответить с цитированием
Старый 27.06.2012, 01:16   #2
Joeymax
Пользователь
 
Регистрация: 17.01.2012
Сообщений: 14
По умолчанию

Приведи подтверждающий тестовый пример
Joeymax вне форума Ответить с цитированием
Старый 27.06.2012, 08:02   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
выдается в автоинкременте 0
Надо смотреть и щупать твою БД и запрос, каким вставляешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.06.2012, 16:50   #4
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

Вот база данных. После удаления 7 строки и вставки новой записи в неё инкремент в первом поле установил значение ноль, затем в картинке, которую я вставил в этот пост показано что я пробую добавить 8 запись, она не добавляется хоть значение поле number установлено в int(10) на второй картинке указано. Почему нельзя вставить ещё записи и как сделать чтобы продолжило считать 7,8,9,10 с 6 на котором закончило?
Изображения
Тип файла: jpg 1.jpg (13.6 Кб, 40 просмотров)
Тип файла: jpg clip_image002.jpg (40.2 Кб, 121 просмотров)

Последний раз редактировалось kilogram; 27.06.2012 в 16:56.
kilogram вне форума Ответить с цитированием
Старый 27.06.2012, 17:26   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Почему нельзя вставить ещё записи
Не понял зачем Default в автоинкрементом поле? Возможно именно он и мешает
Цитата:
как сделать чтобы продолжило считать 7,8,9,10 с 6 на котором закончило
Просто так и на автомате ни как, кроме случаев когда СУБД имеет спец. средства для ручной вставки значений в такие поля, и то, это далеко не автоматически, а с участием программиста или хранимых процедур
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.06.2012, 17:30   #6
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

Вот так, точно
Код:
ALTER TABLE `cat` CHANGE `number` `number` INT( 11 ) NOT NULL AUTO_INCREMENT
Небольшой нюанс. У меня на фото ниже, было вставленных 10 записей. По каким-то причинам мне пришлось удалить запись под номером 7. Я удалил и затем вставил запись, и она вставилась уже под номером 11 после 10. В таких случаях приходится обновлять только 11 на 7, других выходов нету?
Изображения
Тип файла: jpg clip_image002.jpg (28.9 Кб, 46 просмотров)

Последний раз редактировалось Stilet; 27.06.2012 в 21:21.
kilogram вне форума Ответить с цитированием
Старый 27.06.2012, 17:56   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Не понимаю актуальность таких дырок. Всегда есть удаления и дырки неизбежны. Если нужен порядковый номер, то добавляйте поле для этих целей и поддерживайте в нем целостную нумерацию. Автоинкрементность здесь не при делах. И представьте таблицу с сотнями тысяч записей и автоинкрементным ключем, массовые вставки и удаления. Тут не только запаришься ключ править (а если еще есть дочерние таблицы, то вообще триндец), а и поля с подержкой правильной нумерации, которые тоже в общем не нужны
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.06.2012 в 18:04.
Аватар вне форума Ответить с цитированием
Старый 27.06.2012, 18:38   #8
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

а что мешает сортировать по number?
Pamparam вне форума Ответить с цитированием
Старый 28.06.2012, 09:54   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Аватар, +1

Цитата:
В таких случаях приходится обновлять только 11 на 7, других выходов нету?
Есть.
Перечитывать пост #7 (с) Аватар до тех пор, пока не прийдёт просветление и Вы не поймёте, что УНИКАЛЬНЫЙ ПЕРВИЧНЫЙ КЛЮЧ никакого отношения к нумерации записей не имеет. и может быть даже таким _3JC0L3U0P или даже таким: 4D36E96A-E325-11CE-BFC1-08002BE10318
Использовать первичный ключ в других целях (как-то для нумерации документов и т.п.) - НЕ РЕКОМЕНДУЕТСЯ!
Изменять значение первичного ключа КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЕТСЯ! (я бы на месте разработчиков СУБД вообще запретил подобные модификации для автоинкриментных полей, хотя, конечно, тогда backup может пострадать...)

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

Ну и последнее. во многих СУБД при выборке данных можно написать такой запрос, который будет возвращать НОМЕР записи в выборке. Вот там будет 1, 2, 3, 4 и т.д. строго по порядку. Возможно, что это простое решение и подойдёт в вашем случае.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL, dbExpress, auto_increment davidoff_pk БД в Delphi 5 25.01.2012 11:01
Не работает auto_increment SwiP SQL, базы данных 4 06.05.2011 20:41
Зачем присваивают значение AUTO_INCREMENT ? SuBwooFer SQL, базы данных 2 11.11.2010 18:01
Не работает auto_increment insense PHP 14 18.06.2010 19:18
Auto_Increment D-Snaker PHP 1 21.08.2009 20:34