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