Nepotřebujete ani 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
- Cokoli nad nebo pod původní a novou pozicí není třeba měnit.
- Vše ostatní se posouvá nahoru nebo dolů.
- Kromě původní položky, která se přesune na novou pozici.