UPSERT-有效更新或在vb.net,SQL Server中插入



我试图理解如何简化记录的过程,如果不存在或更新记录(如果已经存在)。我不是在使用存储过程,尽管这可能是这样做的最有效方法。

必要的实际情况是将用户偏好/设置保存到我的设置表。

在MS Access中,我通常会拉动DAO记录集寻找指定的设置。如果记录集回到空,则我知道我需要添加一个可以使用同一RecordSet对象进行的新记录。另一方面,如果不是空的,我可以立即更新设置的值。从理论上讲,这只是两个数据库操作。

在.NET中推荐的方法是什么?

存储过程当然是一种简单的方法。您可以尝试更新记录,如果没有记录更改,则将其添加。示例:

create procedure UpateUserSetting
  @UserId int,
  @Setting int
as
set nocount on
update UserSetting
set Setting = @Setting
where UserId = @UserId
if (@@rowcount = 0) begin
  insert into UserSetting (
    UserId, Setting
  ) values (
    @UserId, @Setting
  )
end

您无需存储过程就可以做同样的事情。然后,您将首先运行更新,并检查受影响的行的数量,该行从ExecuteNonQuery方法返回,并在其他查询中进行插入。

最新更新