Вы можете использовать обновляемый cte:
with cte as (
select
sortOrder,
row_number() over(partition by EntityCollectionId order by EntityName) rn
from mytable
where EntityCollection = 114
)
update cte set SortOrder = n
Обратите внимание, что предложение where
не обязательно обязательно. Если бы только коллекция сущностей 114 имела изменения, то порядок сортировки других записей будет переназначен на то же значение.
Наконец: нет смысла хранить информацию такого типа в таблице. Всякий раз, когда происходят операции модификации данных, вам нужно сканировать таблицу, чтобы переназначить порядок сортировки. Кажется, что было бы проще просто вычислить информацию на лету, когда вам это нужно (обычно используя row_number()
в запросе select
).