您好,所有SQL Server黑带大师都在这里。
我有一个简单的问题需要解决。我正在尝试对一张表做一些奇怪的更新。表的具体结构并不重要,我的问题基本上可以简化为以下问题:
update SalesTotal
set @total = total = @total + sales,
@flag = flag = case when @flag = 1 then 0
when @total > x then 1
else 0 end问题是我能相信@total变量会有一个新的值ie。将在第二个设置部分之前执行,或者它将包含一个“旧”值(来自上一次赋值),或者它是未定义的。我解决这个问题已经有一段时间了,找不到解决方案,这对我的更新真的很重要(我想一次性更新一个表)。我想要更新的其中一个值依赖于另一个值(在同一行中),因此它在单个更新中工作的唯一方法是它是否工作。
希望你能帮助我
发布于 2010-11-03 06:06:00
不,您不能假设执行的命令顺序。绝对不能保证表中更新跟踪位置的顺序,绝对不能保证@variable为每个表集更新一次,并且更新很可能与Halloween protection的假脱机步骤一起运行。
https://stackoverflow.com/questions/4082481
复制相似问题