sql >> Databasteknik >  >> RDS >> Sqlserver

Radlås - manuellt använda dem

Den typ av tillvägagångssätt jag skulle rekommendera är att ha ett fält i posten i linje med det som indikerar om posten bearbetas eller inte. Implementera sedan en "läs nästa från kön"-sproc som gör följande, för att säkerställa att inga två processer hämtar samma post:

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

För mer information om dessa tabelltips, se MSDN



  1. dubbletter av poster måste radera oracle db

  2. Formatera datum i PostgreSQL

  3. Använd Firebase DB med lokal DB

  4. Heroku språkspråk fungerar inte