在不使用存储过程的情况下在SQL Server 2005上插入/更新

Pau*_*ory 1 sql sql-server-2005 insert-update

我正在尝试执行经典的插入/更新方案,我需要更新数据库中的现有行,或者如果它们不存在则插入它们.

我已经找到了关于这个主题的上一个问题,但是它涉及我不使用的存储过程.我想只使用简单的SQL SELECT,INSERT和UPDATE语句,除非有更好的可用(MERGE语句在SQL Server 2005中不可用).

我想我的一般想法是这样的:

If the row is found
  update
else
  insert
Run Code Online (Sandbox Code Playgroud)

至于检查行​​的存在,在调用UPDATE或INSERT之前执行SELECT语句有多昂贵?或者最好只尝试UPDATE,检查受影响的行数,然后在受影响的行为0时执行INSERT?

Sör*_*lau 7

最有效的方法是执行UPDATE,然后执行INSERTif @@rowcount为零,如前面的答案所述.