Мне нужно добавить атрибут sortOrder для элемента XML в SQL-сервере.У меня есть это обновление, которое добавляет новый элемент.
UPDATE TargetTable
SET XMLColumn.modify('insert sql:variable("@newElement") as last into (/Root)[1]')
WHERE ID = @id
Мне нужно добавить атрибут с именем sortOrder в новый элемент.Это значение - количество существующих элементов плюс один.Вот как я это делаю.Элемент @newElement для добавления передается.
select @elementCount = XMLHistory.value('count(Root/Entry)', 'int')
from TargetTable WHERE ID = @id
set @elementCount = @elementCount + 1
set @newElement.modify('insert attribute sortOrder {sql:variable("@elementCount")} into (Entry)[1]')
UPDATE TargetTable
SET XMLColumn.modify('insert sql:variable("@newElement") as last into (/Root)[1]')
WHERE ID = @id
Кто-нибудь может порекомендовать лучший способ?Мне не нравится запрашивать таблицу, а затем делать обновления.Я бы предпочел сделать все это в одном обновлении.