sql >> Databasteknik >  >> RDS >> Sqlserver

SELECT och UPPDATERA tabellen så att det inte finns någon överlappning av trådar

Om du menar en låsning av en säker kötyp samtidigt som du använder ROWLOCK, UPDLOCK, READPAST-tips?

SQL Server Process Queue Race Condition

BEGIN TRAN

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

COMMIT TRAN -- TRAM

Dock i ett uttalande. något liknande

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. Fel 2006:MySQL-servern har försvunnit med Python, Bottle Microframework och Apache

  2. GREATEST() Funktion i PostgreSQL

  3. MySQL beräkna glidande medelvärde av N rader

  4. MySQL:Begränsa en uppsättning kolumner så att åtminstone en inte är NULL