我编写了一个存储过程来更新表中的数据。它看起来像这样:
UPDATE dbo.sample
SET column_a += @value
WHERE id = @id
我发现它首先没有总和更新。结果如下面的命令:
UPDATE dbo.sample
SET column_a = @value
WHERE id = @id
我必须使用SET column_a = column_a + @value
才能正确更新。我想知道为什么SQL Server在分配到左侧之前不对右侧的表达式求和。我测试了变量,它的工作原理。它只在这种情况下不起作用。
我现在使用的命令是:
UPDATE dbo.sample
SET column_a = column_a + @value
WHERE id = @id
答案 0 :(得分:1)
我尝试了以下脚本。它对我来说很好。
我建议你尝试一次。如果问题仍然存在,请告诉我。
create table #temp1(id int, prodName varchar(max))
insert into #temp1 values(1,'a')
insert into #temp1 values(2,'b')
insert into #temp1 values(3,'c')
insert into #temp1 values(4,'d')
select * from #temp1
declare @var varchar(1);
set @var = '5'; --note that i even tried declaring it as a varchar. it still works!
update #temp1
set id +=@var
select * from #temp1
drop table #temp1
答案 1 :(得分:0)
SQL Server 2008中column_a + = @value 等于 column_a = column_a + @value
它只是第一个很短