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

SELECT dan UPDATE tabel sehingga tidak ada Utas yang tumpang tindih

Jika yang Anda maksud adalah penguncian jenis antrean aman konkurensi, lalu gunakan petunjuk ROWLOCK, UPDLOCK, READPAST?

Kondisi Balap Antrian Proses SQL Server

BEGIN TRAN

SELECT TOP 1 @QueryID = [ID] from Table WITH (ROWLOCK, UPDLOCK, READPAST)
UPDATE Table SET [Read] = 1 WHERE [ID] = @QueryID 

COMMIT TRAN -- TRAM

Namun, dalam satu pernyataan. sesuatu seperti

WITH T AS
(
    --ORDER BY with TOP , or perhaps MIN is better?
    SELECT TOP 1 [Read], [ID] from Table
    WITH (ROWLOCK, UPDLOCK, READPAST) ORDER BY [Read]
)
UPDATE
    T
SET
    [Read] = 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tambahkan warna baris bergantian ke laporan layanan Pelaporan SQL Server

  2. Sintaks salah di dekat kata kunci 'current_timestamp' - Tetapi hanya pada satu Database

  3. Bagaimana cara menghindari string di SQL Server menggunakan PHP?

  4. SQL Dynamic Pivot - cara memesan kolom

  5. Tambahkan IIS 7 AppPool Identities sebagai SQL Server Logos