Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Sisipkan Masalah Konkurensi - Lingkungan Multithreaded

Caranya adalah dengan menambahkan WHERE pada statement INSERT Anda sehingga INSERT hanya berfungsi jika item tersebut tidak ada, diikuti dengan pernyataan SELECT. Misalkan catatan dapat diidentifikasi dengan kolom ID Anda akan menulis:

INSERT INTO MyTable (ID,Col1,Col2,...) 
SELECT @IDValue,@Col1Value,@Col2Value, ...
WHERE NOT EXISTS (SELECT ID  
              FROM MyTable 
              WHERE [email protected]) 

SELECT *  
FROM MyTable 
Where [email protected] 

Anda tidak perlu memasukkan pernyataan dalam transaksi karena setiap pernyataan dieksekusi dalam transaksi implisitnya sendiri. Jadi, tidak mungkin dua INSERT akan berhasil pada saat yang bersamaan.

EDIT :Sintaks INSERT ... SELECT diperlukan karena TSQL tidak mengizinkan bagian VALUES dan WHERE dalam pernyataan INSERT.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klausa WHERE lebih baik dieksekusi sebelum IN dan JOIN atau sesudahnya

  2. MySQL - Arti KUNCI UTAMA, KUNCI UNIK dan KUNCI saat digunakan bersama saat membuat tabel

  3. SQL Server dan koneksi terputus di tengah transaksi

  4. Bagaimana membandingkan antara waktu dalam loop sementara dalam prosedur tersimpan?

  5. Transfer data yang aman dari SQL server ke SQL server melalui Internet