| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Проблема с ID указателями, удалением и добавлением |
| Автор: InfMag 12.2.2006, 21:15 |
| Я вот только заметил, если удалить значение в базе и потом добавить новое, то все равно ID указатель не сдвигается на ряд меньше. Проблема в том, что я обнаружил такую проблему. Я удалял записи запросами, но после добавления новой записи она добавлялась не в конец, а где-то раньше, походу она встала на место удаленной записи с ее ID... Что делать? Это недопустимо! |
| Автор: Kesh 12.2.2006, 21:32 |
| InfMag, а у тебя autoincrement есть ? |
| Автор: InfMag 12.2.2006, 21:38 | ||
Да |
| Автор: Kesh 12.2.2006, 22:49 |
| InfMag, тогда описывай подробнее и желательно еще dump базы... |
| Автор: InfMag 12.2.2006, 23:23 |
| У меня есть база из трех полей id login password, дык я позабивал рядов в ней, потом некоторые удалял, вышло id login password 1 admin xxx 5 suxx xxx 10 sss xxx Вобщем после добавления вот что получилось: 1 admin xxx 11 xsx xxx 5 suxx xxx 10 sss xxx И как енто понимать? |
| Автор: Kefir 12.2.2006, 23:29 |
| ну и нормально - я так понял что последний ИД был равен 10. Ты добавил запись и с авто_инкрементом появилась запись с ИД = 11. Ничего странного не вижу... |
| Автор: InfMag 12.2.2006, 23:42 | ||
Дык я все по строчкам расписал, ты видел где именно она появилась? Она на втором уровне оказалась какого-то хрена, а не на последнем как должна была быть |
| Автор: R.M. 13.2.2006, 08:30 | ||
| InfMag, Какая разница как это выглядит в БД? Сделай такой вывод
смотри и радуйся что всё на своих местах. |
| Автор: Kefir 13.2.2006, 10:13 |
| InfMag, id по сути своей не является номером строки в таблице. id - это просто поле, в котором хранится уникальный номер записи. Как показал Куксикус по нему можно сортировать в хронологическом порядке - это именно то чего ты хочешь, однако это частный случай запроса. Запросов много и невозможна ситуация, когда все запросы будут выдавать результсеты с одинаковой последовательностью id. |
| Автор: InfMag 13.2.2006, 10:17 |
| Огромное спасибо! Просто и без гемороя +1 Добавлено @ 10:28 Kefir, да я понимаю, понимаю что id это всеголиш значение, на него присвоен ключевой указатель. Я думал просто, что каждая запись в майсикуле выдается в конец... |
| Автор: InfMag 13.2.2006, 15:06 |
| Так, теперь иная проблема. Вот у меня есть список рядов в базе, после раскопок по ней ID примерно вот такие: 1 3 6 11 43 56 У меня стоит задача чтобы строчку по ID 11 сдвинуть выше, тоесть на место ряда с ID 6 Как это сделать? Я канешь могу просто обменом значений енто зделать, используя текущий ID и отнимая от него единицу, но ID то далеко не близкие... :/ |
| Автор: Kesh 13.2.2006, 17:43 |
| InfMag, для сортировки задай дополнительное поле и нумеруй его... |
| Автор: InfMag 13.2.2006, 21:33 |
| Kesh, тоесть каждый раз перебирать базу и пронумеровывать и не ставить аутоинцрементов? |
| Автор: Kefir 13.2.2006, 23:45 |
| InfMag, немного непонятно - опиши что ты хочешь в итоге получить? куда ИД=6 сам деваться должен? |
| Автор: InfMag 13.2.2006, 23:58 | ||
| Kesh, все, сделал! Написал функцию для автонумеровки:
+1 Всем спасибо, со всем разобрался... |