2012-04-11 68 views
0

我有一个表像这样在SQL Server:插入和更新SQL Server中的存储过程

varID(PK) dataID(PK) is_used 
A   1   0 
B   1   0 

然后我加载数据,如果varID/dataID组合存在要更新is_used至1,并将其添加在除此以外。

所以我必须插入/更新这些varID/dataID组合。

varID(PK) dataID(PK) 
B   1   
C   1 

所以更新的表是这样的:

varID(PK) dataID(PK) is_used 
A   1   0 
B   1   1 
C   1   1 

什么是最简单的方法是什么?我将在存储过程中完成它。

回答

5

程序尝试更新给定密钥is_used。如果不成功,则插入新行。注意我把0作为is_used的默认值 - 我认为is_used = 1因为(C,1)是一个疏忽。

create proc AddVarDataCombo (@varID varchar(100), @dataID int) 
as 
    set nocount on 

    update ATable 
     set is_used = 1 
    where varID = @varID 
     and dataID = @dataID 

    if @@rowcount = 0 
    begin 
     insert into ATable 
      values (@varID, @dataID, 0) 
    end