我有一個包含XML列的表, 我想更新xml以插入屬性,或者如果該屬性已存在,則更改屬性值。XQuery在單個SQL更新命令中添加或替換屬性
比方說,開始的XML是:< d />
插入:
UPDATE Table
set XmlCol.modify('insert attribute att {"1"} into /d[1]')
改變:如果屬性已經存在
UPDATE Table
set XmlCol.modify('replace value of /d[1]/@att with "1"')
插入會失敗,如果屬性不存在,替換將失敗。 我試圖使用'如果',但我不認爲它可以工作,我得到的錯誤:「XQuery [修改()]:'屬性'附近的語法錯誤,預計'其他'。
IF嘗試
UPDATE Table
set XmlCol.modify('if empty(/d[1]/@att)
then insert attribute att {"1"} into /d[1]
else replace value of /d[1]/@att with "1"')
目前我選擇XML到一個變量,然後使用T-SQL,然後更新與新的XML列修改它,這需要我去鎖定該行的交易對於數據庫而言可能更昂貴。