Nie potrzebujesz nawet ID
parametr.
UPDATE
yourTable
SET
Order = (CASE WHEN Order = @oldOrder THEN @newOrder
WHEN @newOrder > @oldOrder THEN Order - 1
ELSE Order + 1 END)
WHERE
Order BETWEEN @oldOrder AND @newOrder
OR Order BETWEEN @newOrder AND @oldOrder
- Wszystko powyżej lub poniżej oryginalnej i nowej pozycji nie musi być zmieniane.
- Wszystko inne porusza się w górę lub w dół o jeden.
- Z wyjątkiem oryginalnego elementu, który przesuwa się do nowej pozycji.