Sie brauchen nicht einmal die 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
- Alles oberhalb oder unterhalb der ursprünglichen und neuen Positionen muss nicht geändert werden.
- Alles andere bewegt sich um eins nach oben oder unten.
- Außer dem ursprünglichen Element, das an die neue Position verschoben wird.