Saya telah menulis proc yang disimpan yang akan melakukan pembaruan jika ada catatan, jika tidak maka akan melakukan penyisipan. Ini terlihat seperti ini:
update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)
Logika saya di balik menulisnya dengan cara ini adalah bahwa pembaruan akan melakukan pemilihan implisit menggunakan klausa where dan jika itu mengembalikan 0 maka penyisipan akan dilakukan.
Alternatif untuk melakukannya dengan cara ini adalah melakukan pemilihan dan kemudian berdasarkan jumlah baris yang dikembalikan, lakukan pembaruan atau penyisipan. Ini saya anggap tidak efisien karena jika Anda melakukan pembaruan itu akan menyebabkan 2 pilihan (panggilan pilih eksplisit pertama dan yang kedua implisit di mana pembaruan). Jika proc melakukan penyisipan maka tidak akan ada perbedaan dalam efisiensi.
Apakah logika saya terdengar di sini? Apakah ini cara Anda menggabungkan penyisipan dan pembaruan ke dalam proc yang disimpan?