SQL Server中的插入和更新以用于存储过程

cdu*_*dub 0 sql sql-server stored-procedures sql-server-2005

我在SQL Server中有这样的表:

varID(PK)    dataID(PK)  is_used
A            1           0
B            1           0
Run Code Online (Sandbox Code Playgroud)

然后,如果varID/dataID组合存在,我正在加载数据以将is_used更新为1 ,否则添加它.

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

varID(PK)    dataID(PK)  
B            1           
C            1
Run Code Online (Sandbox Code Playgroud)

所以更新的表格如下所示:

varID(PK)    dataID(PK)  is_used
A            1           0
B            1           1
C            1           1
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么?我将在存储过程中执行此操作.

Nik*_*vić 5

过程尝试更新is_used给定的密​​钥.如果不成功,请插入新行.注意我把0作为is_used的默认值 - 我认为(C,1)的is_used = 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
Run Code Online (Sandbox Code Playgroud)