Вставить обновление хранимой процедуры на SQL Server

Мы написали сохраненный процесс, который будет обновлять, если запись существует, в противном случае он будет делать вставку. Это выглядит примерно так:

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 и второй неявный в месте, где находится обновление). Если процесс должен был сделать вставку, то естьне будет никакой разницы в эффективности.

Моя логика здесь звучит? Это как вы могли бы объединить вставку и обновление в сохраненный процесс?

Ответы на вопрос(8)

Ваш ответ на вопрос