相关疑难解决方法(0)

SQL Server上INSERT或UPDATE的解决方案

假设一个表结构MyTable(KEY, datafield1, datafield2...).

通常我想要更新现有记录,或者如果新记录不存在则插入新记录.

实质上:

IF (key exists)
  run update command
ELSE
  run insert command
Run Code Online (Sandbox Code Playgroud)

写这个的最佳表现方式是什么?

sql database sql-server insert upsert

564
推荐指数
11
解决办法
60万
查看次数

在SQL Server上插入更新存储过程

我已经编写了一个存储过程,如果存在记录将进行更新,否则它将进行插入.它看起来像这样:

update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)
Run Code Online (Sandbox Code Playgroud)

我以这种方式编写它的逻辑是更新将使用where子句执行隐式选择,如果返回0,则插入将发生.

这样做的替代方法是进行选择,然后根据返回的行数进行更新或插入.我认为这是低效的,因为如果要进行更新,将导致2次选择(第一次显式选择调用,第二次隐式更新位置).如果proc要进行插入,那么效率就没有差别.

我的逻辑声音在这里吗?这是如何将插入和更新组合到存储过程中的?

sql sql-server stored-procedures upsert

99
推荐指数
6
解决办法
5万
查看次数

标签 统计

sql ×2

sql-server ×2

upsert ×2

database ×1

insert ×1

stored-procedures ×1