Non hai nemmeno bisogno del ID
parametro.
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
- Non è necessario modificare nulla al di sopra o al di sotto delle posizioni originali e nuove.
- Tutto il resto si sposta in alto o in basso.
- Tranne l'elemento originale, che si sposta nella nuova posizione.