Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中为存储过程插入和更新_Sql_Sql Server_Sql Server 2005_Stored Procedures - Fatal编程技术网

在SQL Server中为存储过程插入和更新

在SQL Server中为存储过程插入和更新,sql,sql-server,sql-server-2005,stored-procedures,Sql,Sql Server,Sql Server 2005,Stored Procedures,我在SQL Server中有这样一个表: varID(PK) dataID(PK) is_used A 1 0 B 1 0 然后,如果varID/dataID组合存在,我将加载要更新的数据,并将其添加到1中 因此,我必须插入/更新这些varID/dataID组合 varID(PK) dataID(PK) B 1 C 1 因此,

我在SQL Server中有这样一个表:

varID(PK)    dataID(PK)  is_used
A            1           0
B            1           0
然后,如果
varID/dataID
组合存在,我将加载要更新的数据,并将其添加到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

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

过程尝试更新
是否已使用
给定密钥。如果不成功,则插入新行。注:我将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

过程尝试更新
是否已使用
给定密钥。如果不成功,则插入新行。注:我将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