|
|
|
| У меня в базе данных существует ключевое поле 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) Нужно ли вообще сдвигать номера на единицу, или на практике это не имеет значения? | |
|
|
|
|
|
|
|
для: Agatt
(28.04.2007 в 06:47)
| | >Как можно заставить SQL увеличивать номер с последнего, который есть?
Автоинкримент меняется так
ALTER TABLE guest AUTO_INCREMENT = 3;
|
Этот запрос меняет значение "следующего" инкримента
>Нужно ли вообще сдвигать номера на единицу, или на практике это не имеет значения?
нет | |
|
|
|
|
|
|
|
для: Agatt
(28.04.2007 в 06:47)
| | >Когда я добавил возможность удалять сообщения, то сделал небольшой цикл, который сдвигает номер сообщения вниз.
поле, которое Вы пытаетесь корректировать - вовсе не номер сообщения. Поле - первичный ключ доступа в таблицу. И такие шутки с ним шутить нельзя. Исправляйте назад.
Если Вы хотите нумеровать сообщения - нумеруйте их после выборки из базы. | |
|
|
|
|
|
|
|
для: Trianon
(28.04.2007 в 11:09)
| | Да, это первичный ключ. Я пока не разбираюсь в тонкостях MySQL, но обязательно разберусь со временем.
2MIchail1982
Раз этот сдвиг не нужен, то и говорить нечего. Действительно, раз DELETE удаляет запись, а не обнуляет значения, то никаких проблем возникнуть не должно.
Спасибо всем за ответы ))) | |
|
|
|