0

我编写了一个存储过程来更新表中的数据。它看起来像这样:

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
4

2 回答 2

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
于 2013-02-24T13:02:37.913 回答
0

column_a += @value在 SQL Server 2008中等于column_a = column_a + @value

它只是第一个很短

于 2013-02-24T13:24:27.880 回答