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