Du behøver ikke engang ID
parameter.
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
- Alt over eller under de oprindelige og nye positioner skal ikke ændres.
- Alt andet bevæger sig op eller ned én.
- Med undtagelse af det originale element, der flytter til den nye position.