我编写了一个存储的proc,如果有记录,它将进行更新,否则它将进行插入。看起来像这样:
update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)
我以这种方式编写代码的逻辑是,更新将使用where子句执行隐式选择,如果返回0,则将进行插入。
用这种方法的替代方法是先进行选择,然后根据返回的行数进行更新或插入。我认为这种方法效率低下,因为如果要进行更新,则会导致2个选择(第一个显式的select调用和第二个隐式的update调用)。如果proc进行插入操作,则效率没有差异。
我的逻辑声音在这里吗?这是将插入和更新合并到存储过程中的方式吗?