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

Kunci baris - menggunakannya secara manual

Jenis pendekatan yang saya sarankan adalah memiliki bidang dalam catatan di sepanjang baris yang menunjukkan apakah catatan sedang diproses atau tidak. Kemudian terapkan sproc "baca berikutnya dari antrian" yang melakukan hal berikut, untuk memastikan tidak ada 2 proses yang mengambil catatan yang sama:

BEGIN TRANSACTION

-- Find the next available record that's not already being processed.
-- The combination of UPDLOCK and READPAST hints makes sure 2 processes don't 
-- grab the same record, and that processes don't block each other.
SELECT TOP 1 @ID = ID
FROM YourTable WITH (UPDLOCK, READPAST)
WHERE BeingProcessed = 0

-- If we've found a record, set it's status to "being processed"
IF (@ID IS NOT NULL)
    UPDATE YourTable SET BeingProcessed = 1 WHERE ID = @ID

COMMIT TRANSACTION

-- Finally return the record we've picked up
IF (@ID IS NOT NULL)
    SELECT * FROM YourTable WHERE ID = @ID

Untuk info selengkapnya tentang petunjuk tabel ini, lihat MSDN



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server datetime SEPERTI pilih?

  2. Menghapus Profil Email Database (SSMS)

  3. Bagaimana Anda mentransfer atau mengekspor data SQL Server 2005 ke Excel?

  4. Metode yang disarankan untuk mengimpor file .csv ke Microsoft SQL Server 2008 R2?

  5. Penyisipan Massal Daftar Generik C# ke SQL Server