Я написал хранимую процедуру, которая будет выполнять обновление, если запись существует, иначе она выполнит вставку. Это выглядит примерно так:
update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)
Моя логика написания его таким образом заключается в том, что обновление будет выполнять неявный выбор с использованием предложения where, и если это вернет 0, то произойдет вставка.
Альтернативой этому может быть выбор, а затем в зависимости от количества возвращенных строк либо обновление, либо вставка. Это я считал неэффективным, потому что если вы собираетесь выполнить обновление, это вызовет 2 выбора (первый явный вызов выбора и второй неявный в месте обновления). Если бы процесс делал вставку, то разницы в эффективности не было бы.
Здесь моя логика звучит? Это как бы вы могли объединить вставку и обновление в сохраненную процедуру?