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

Форум MySQL

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

 

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

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

тема: Автозаплонение
 
 автор: Agatt   (28.04.2007 в 06:47)   письмо автору
 
 

У меня в базе данных существует ключевое поле Id_msg типа int Not Null auto_increment. Короче говоря, это есть уникальный номер сообщения. Когда я добавил возможность удалять сообщения, то сделал небольшой цикл, который сдвигает номер сообщения вниз.

//Цикл сдвига номеров вниз на 1
for ($i = $id_msg; $i<=$count; $i++)
{
$query = "UPDATE guest SET id_msg =".$i." WHERE id_msg =".($i+1);
$res = mysql_query($query);

}//for
Проблема проявилась вот в чем. Если после удаления добавить новую запись, то уникальный номер, к сожалению не учитывает то, что я сдвигал номера и ставит следуюший, каковой, по его мнению и должен быть. Т.е. если я удалил 95-е сообщение из 96, то 96 станет 95, а новое 97. Итак, два вопроса

1) Как можно заставить SQL увеличивать номер с последнего, который есть?
2) Нужно ли вообще сдвигать номера на единицу, или на практике это не имеет значения?

   
 
 автор: MIchail1982   (28.04.2007 в 10:51)   письмо автору
 
   для: Agatt   (28.04.2007 в 06:47)
 

>Как можно заставить SQL увеличивать номер с последнего, который есть?
Автоинкримент меняется так

ALTER TABLE guest AUTO_INCREMENT = 3;

Этот запрос меняет значение "следующего" инкримента

>Нужно ли вообще сдвигать номера на единицу, или на практике это не имеет значения?
нет

   
 
 автор: Trianon   (28.04.2007 в 11:09)   письмо автору
 
   для: Agatt   (28.04.2007 в 06:47)
 

>Когда я добавил возможность удалять сообщения, то сделал небольшой цикл, который сдвигает номер сообщения вниз.

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

Если Вы хотите нумеровать сообщения - нумеруйте их после выборки из базы.

   
 
 автор: Agatt   (28.04.2007 в 17:04)   письмо автору
 
   для: Trianon   (28.04.2007 в 11:09)
 

Да, это первичный ключ. Я пока не разбираюсь в тонкостях MySQL, но обязательно разберусь со временем.


2MIchail1982

Раз этот сдвиг не нужен, то и говорить нечего. Действительно, раз DELETE удаляет запись, а не обнуляет значения, то никаких проблем возникнуть не должно.

Спасибо всем за ответы )))

   
Rambler's Top100
вверх

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