You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一条UPDATE语句中交叉更新列的结果是否有官方确定性保障?

关于同一条UPDATE语句中多列更新的结果稳定性问题

在标准SQL以及包括SQL Server在内的绝大多数主流数据库中,同一条UPDATE语句里的列更新是基于行的原始值计算的,各列的更新操作不会互相干扰,所以你写的这条语句确实能稳定得到预期结果。

具体逻辑说明

执行UPDATE时,数据库会先读取每行的原始数据,把SET子句里所有赋值表达式的结果都用这些原始值计算出来,再统一把计算好的结果应用到行上。举你的例子来说:

  • Column1 = Column2 用的是更新前的Column2值(200)
  • Column2 = Column3 用的也是更新前的Column3值(3000)
    完全不会出现“Column2先被更新,然后Column1用更新后的Column2值”的情况。

示例验证

更新前数据

Column1Column2Column3
102003000

执行UPDATE语句

UPDATE Table1 
SET Column1 = Column2, Column2 = Column3

更新后预期结果

Column1Column2Column3
20030003000

这种行为是SQL标准的规定,也是几乎所有关系型数据库的通用实现逻辑,即便你没在MSDN找到明确的单独说明,也可以放心使用。

内容的提问来源于stack exchange,提问作者user2316154

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:02:36