Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

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

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

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

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

Вот так, точно
Код:

ALTER TABLE `cat` CHANGE `number` `number` INT( 11 ) NOT NULL AUTO_INCREMENT

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

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

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

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

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

Аватар, +1

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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 19:01
Не работает auto_increment insense PHP 14 18.06.2010 19:18
Auto_Increment D-Snaker PHP 1 21.08.2009 20:34


04:31.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru