SQL untuk menentukan apakah satu bagian data dijalankan oleh kunci dalam Pembaruan atau Sisipkan

Halaman Diperbarui :
Tanggal pembuatan halaman :

Dalam proses seperti Perbarui jika ada kunci atau Sisipkan jika tidak ada kunci, pemilihan biasanya dilakukan berdasarkan kunci, dan proses ditentukan dengan memeriksa apakah ada satu kasus. SQL Server 2008 juga menambahkan pernyataan "gabungkan" yang memungkinkan Anda untuk melakukan Pembaruan dan Menyisipkan (dan kemudian Menghapus) dengan satu pernyataan. Namun, ini adalah perbandingan dua tabel dan tidak cocok untuk data tunggal.

Sebenarnya, ada cara untuk memperbarui baris dengan mudah dengan menentukan Perbarui dan Sisipkan tanpa harus memeriksa jumlah catatan dengan pernyataan pilih.

update [TableName]
set [ColumnName] = @value
--    : 他更新 SQL
where [KeyColumnName] = @value
--    : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
  [ColumnName]
--  : 他更新 SQL
)
values
(
  @value
--  : 他更新値
)

Kata kuncinya di sini adalah "@@ROWCOUNT". @@ROWCOUNT dapat mengambil jumlah baris tempat SQL sebelumnya diterapkan. Kode sebelumnya mengeksekusi pernyataan Pembaruan terlebih dahulu, dan jika telah diperbarui, @@ROWCOUNT mengembalikan 1 atau lebih besar, sehingga tidak menjalankan pernyataan Sisipkan berikutnya. Sebaliknya, jika tidak ada baris yang diperbarui dalam pernyataan Pembaruan, @@ROWCOUNT mengembalikan 0, jadi jalankan penilaian pernyataan Insert by IF.

Karena SQL di atas adalah templat, ganti nama kolom dan nilai yang akan diperbarui pada waktu yang tepat. @value hanyalah nama variabel, jadi gantilah ini dengan nilai yang ingin Anda perbarui.