Du kan få en tävlingskondition.
Det kan göras i ett uttalande:
- Du kan tilldela i en UPPDATERING
- Låstipsen tillåter en annan process att hoppa över den här raden
- OUTPUT-satsen returnerar data till den som ringer
Prova detta... (redigera:låset har tagits bort)
Update TOP (1) ServerLoginUsers WITH (ROWLOCK, READPAST)
OUTPUT INSERTED.*
SET
AssignedTo = @User, AssignedToDate = getdate(), SourcePool = @UserPool
WHERE
AssignedTo is null and [TsServer] = @Server -- not needed -> and UserName = @ServerUser
Om inte kan du behöva ett separat val
Update TOP (1) ServerLoginUsers WITH (ROWLOCK, READPAST)
SET
-- yes, assign in an update
@ServerUser = UserName,
-- write
AssignedTo = @User, AssignedToDate = getdate(), SourcePool = @UserPool
OUTPUT INSERTED.*
WHERE
AssignedTo is null and [TsServer] = @Server -- not needed -> and UserName = @ServerUser
SELECT ...
Se detta för mer:SQL Server Process Queue Race Condition