Задать вопрос
Meliborn
@Meliborn

Восстановление нумерации в базе, поле не автоинкремент?

Есть таблица. В таблицу при каждом добавлении вносится 8 записей (1 пачка = 8 записям). У этих восьми записей существует поле отвечающее за позицию, соответственно оно одинаково для каждой пачки.

Для первых восьми оно будет равняться 1, для вторых восьми — 2 и т.д. (убил бы за такую организацию). После удаления пачки последовательность нарушается.


Например если удалил вторую пачку, то осталось 8 записей со значением 1 и 8 со значением 3.

Собсвенно вопрос: как после каждого удаления вернуть последовательность каждой пачке?


MySQL, писал не я, попросили исправить. Я в шоке.
  • Вопрос задан
  • 2794 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
ertaquo
@ertaquo
Может, так?
UPDATE table SET index = index - 1 WHERE index > 2
Ответ написан
bubuq
@bubuq
Э… ну тогда так:

Select @i:=0; Update TBL Set index = @i := @i +1, index = floor(index/8);
Ответ написан
Комментировать
@BearOff
А почему, собственно, требуется бездырочность?
Ответ написан
Комментировать
bubuq
@bubuq
Что означает «вернуть последовательность»? Если удалили пачку 2, то все пачки с номера 3 до последней должны быть обновлены, так выходит? А если удалена не полная пачка, так может быть? А если добавлена?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы