Sql server 仅查询更改sql server中的最后记录值

Sql server 仅查询更改sql server中的最后记录值,sql-server,xml,xquery,Sql Server,Xml,Xquery,我在sql server中有一个包含XML数据类型的表。我想更改其中一个属性的值。该表如下所示: id--------version-------XMLdata 1---------2--------------<Package version="1"> .... </Package> 2---------2--------------<Package version="1"> .... </Package> 3---------2--------

我在sql server中有一个包含XML数据类型的表。我想更改其中一个属性的值。该表如下所示:

id--------version-------XMLdata
1---------2--------------<Package version="1"> .... </Package>
2---------2--------------<Package version="1"> .... </Package>
3---------2--------------<Package version="1"> .... </Package>
and so on
但在输出中,我只看到最后一条记录将版本更改为2。 个人记录我还可以通过以下方式更新:

UPDATE Tbl
SET XMLDATA.modify('replace value of (/Package[1]/@version)[1] with "2"')
WHERE id=1
但并非所有记录都在一起。我不明白这背后的原因是什么。 我尝试创建名为Tbl2的表副本,查询正在更新XML数据中的所有记录版本。 停止查询以更改版本属性值的可能依赖项是什么?

.modify()
非常有限,它只允许每次调用进行一次更改,但这应该按预期工作。试试这个:

DECLARE @tbl TABLE (id INT,[version] INT, XMLdata XML);
INSERT INTO @tbl VALUES
 (1,2,'<Package version="1"> .... </Package>')
,(2,2,'<Package version="1"> .... </Package>')
,(3,2,'<Package version="1"> .... </Package>');

UPDATE @tbl SET XMLdata.modify('replace value of (/Package/@version)[1] with 2')
WHERE [version]=2;

SELECT * FROM @tbl;

这是那张桌子上的扳机。
UPDATE Tbl
SET XMLDATA.modify('replace value of (/Package[1]/@version)[1] with "2"')
WHERE id=1
DECLARE @tbl TABLE (id INT,[version] INT, XMLdata XML);
INSERT INTO @tbl VALUES
 (1,2,'<Package version="1"> .... </Package>')
,(2,2,'<Package version="1"> .... </Package>')
,(3,2,'<Package version="1"> .... </Package>');

UPDATE @tbl SET XMLdata.modify('replace value of (/Package/@version)[1] with 2')
WHERE [version]=2;

SELECT * FROM @tbl;
UPDATE @tbl SET XMLdata.modify('replace value of (/Package/@version)[1] with sql:column("version")');