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