レコードが存在する場合に更新を実行するストアドプロシージャを記述しました。それ以外の場合は挿入を実行します。次のようになります。
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番目の暗黙的な呼び出し)が発生するため、非効率的であると考えました。プロシージャが挿入を行う場合、効率に違いはありません。
私の論理はここにありますか?これは、ストアドプロシージャへの挿入と更新を組み合わせる方法ですか?