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