update MyTable set MySort=(%1+%2)-MySort where MySort=%1 or MySort=%2[/code]
чтобы вставить запись после записи со значением MySort=%1 нужно сначала отодвинуть записи так:
update MyTable set MySort=MySort+1 where MySort>%1[/code]
а потом вставить запись со значением MySort=%1+1
Удалять записи можно как обычно.
Для увеличения быстродействия желательно это поле проиндексировать.
Ответов: 2125
Рейтинг: 159
|
|||
nesco, я бы всё-таки не советовал использовать в своей практике rowid, по крайней мере потому, что это не является стандартом SQL. Стандартное решение в данном случае: добавить поле MySort и сортировать в запросе по нему, при вставке записи записывать в него максимальное значение +1 (для вообще первой записи, например 1), чтобы переставить записи достаточно лишь обменять у них это поле, например так:
|
|||
карма: 1 |
|