sql >> Database teknologi >  >> RDS >> Sqlserver

SELECT og UPDATE tabel, så der ikke er nogen overlapning af tråde

Hvis du mener en låsning af en samtidig sikker køtype, skal du bruge ROWLOCK, UPDLOCK, READPAST hints?

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

Dog i en erklæring. noget lignende

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. Forståelse af, hvordan man optimerer en forespørgsel via Postgres/rails forklarer data

  2. Ekko fra MySQL-database med mellemrum og linjeskift?

  3. Hvor fleksible/begrænsende er SQLite-kolonnetyper?

  4. SQL Server Network Configuration Protocols Ikke tilgængelige