Изменить столбец XML со счетчиком из этого столбца XML - PullRequest
0 голосов
/ 26 апреля 2019

Мне нужно добавить атрибут 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

Кто-нибудь может порекомендовать лучший способ?Мне не нравится запрашивать таблицу, а затем делать обновления.Я бы предпочел сделать все это в одном обновлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...