レコードが存在する場合は更新を行い、そうでない場合は挿入を行うストアド プロシージャを作成しました。次のようになります。
update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)
このように書くことの背後にある私のロジックは、更新が where 句を使用して暗黙的な選択を実行し、それが 0 を返す場合、挿入が行われるということです。
この方法に代わる方法は、選択を行い、返された行数に基づいて更新または挿入を行うことです。更新を行う場合、2 つの選択 (最初の明示的な選択呼び出しと、更新の場所での 2 番目の暗黙的な呼び出し) が発生するため、これは非効率的であると考えました。プロシージャが挿入を行う場合、効率に違いはありません。
ここで私の論理は正しいですか?これは、挿入と更新をストアド プロシージャに結合する方法ですか?