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

Форум MySQL

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

 

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

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

тема: удаление и добавление записей в базу
 
 автор: mehelson   (19.02.2007 в 12:24)   письмо автору
 
 

Здравствуйте !
Научите...

После удаления последней записи в таблице, допустим с ключом = 5, (NOT NULL AUTO_INCREMENT)
DELETE FROM users WHERE id_user=5;
новая запись
INSERT INTO users VALUE ( 0, var, var, ..., ...);
добавляется не с этим ключом = 5, а ей присваивается новый номер = 6...
и так далее...
Предположим пришлось удалить 10 записей в разнобой...
остались с номерами 1,3,5,7
А новая запись получит ключ = 11, а оставшиеся так и останутся со своими первоначальными номерами...

как быть ? как "переиндексировать или реконструировать" записи ?
чтобы первая в таблице запись имела ключ именно 1, вторая 2 и т.д.

или это не влияет ни на что и это просто у меня "локально" так представляется

Извините если криво изложил проблему...

Спасибо !

   
 
 автор: Trianon   (19.02.2007 в 12:30)   письмо автору
 
   для: mehelson   (19.02.2007 в 12:24)
 

это не влияет.
И вообще, автоинкремент - это ни какой не нумератор. Это всего лишь простейшее средство получать различающиеся первичные ключи. На этом его роль заканчивается.

   
 
 автор: cheops   (19.02.2007 в 12:36)   письмо автору
 
   для: mehelson   (19.02.2007 в 12:24)
 

Это нормальное поведение, каждая запись имеет уникальный ключ - автоинкрементное поле не должно быть монотонно-возрастающим - оно должно быть уникальным.

>"переиндексировать или реконструировать"
Только удалив столбец и воссоздав его по-новой.

   
 
 автор: mehelson   (19.02.2007 в 12:47)   письмо автору
 
   для: cheops   (19.02.2007 в 12:36)
 

>Только удалив столбец и воссоздав его по-новой.

т.е создав запись с тем же ключом, что и удаленная ?
Если я все правильно понял можете не отвечать...
Спасибо !

   
 
 автор: cheops   (19.02.2007 в 13:29)   письмо автору
 
   для: mehelson   (19.02.2007 в 12:47)
 

Нет, удалив столбец с первичным ключём и создав его по-новой при помощи ALTER TABLE - в этом случае автоматически будет сгенерирована последовательность 1, 2, 3, ... без пропусков.

   
 
 автор: mehelson   (19.02.2007 в 17:04)   письмо автору
 
   для: cheops   (19.02.2007 в 13:29)
 

Объясните, пожалуйста, каким именно значением аlтеr_sрес оператора аltеr таblе воспользоваться?

Вот что делаю: есть столбец sеssion, регистрирующийся получает письмо со ссылкой типа: "http://".$_SERVER['SERVER_NAME']."script.php?session=$id_session"
Сравниваю с даннъми из базы и если это они -
UPDATE table SET session='NULL' WHERE session=$id_session;
тогда нумерация ключа не меняется, а если нет подтверждения, удаляю DELETE...INTERVAL... и вот тогда ключи в беспорядке. Или вообще не в том русле?

Спасибо!

   
 
 автор: cheops   (19.02.2007 в 18:27)   письмо автору
 
   для: mehelson   (19.02.2007 в 17:04)
 

А зачем нужно чтобы ключи были упорядочены? Как правило, их для нумерации не используют, а генерируют порядковые номера в цикле вывода.

   
 
 автор: Ralph   (19.02.2007 в 20:03)   письмо автору
 
   для: cheops   (19.02.2007 в 18:27)
 

Это,по моему,та ошибка,через которую проходят 80% изучавших БД,я вон сам неделю в непонятках был... :-) В этом и прелесть баз,что тебе не надо все до мелочей знать,как идет нумерация,есть ли в ней дырки,и все это подробно базе расжевывать...Ты просто говоришь базе:'дай мне первых десять записей (LIMIT 10) ',и тебе параллельно,как они нумерованы:1,2,3,4,5 или 1,3,4,16,92-это уже проблема базы,пусть она сама разбирается :-)

   
 
 автор: Trianon   (19.02.2007 в 20:13)   письмо автору
 
   для: Ralph   (19.02.2007 в 20:03)
 

Только нужно помнить, что без ORDER BY конструкция LIMIT n теряет смысл.
Так что "дай мне десять записей в порядке возрастания(убывания) чего-нибудь."

   
 
 автор: mehelson   (19.02.2007 в 20:40)   письмо автору
 
   для: Trianon   (19.02.2007 в 20:13)
 

Замечательно!
Объяснили! Спасибо всем!

   
Rambler's Top100
вверх

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