Може да получите условие за състезание.
Може да се направи с един оператор:
- Можете да зададете в АКТУАЛИЗАЦИЯ
- Подсказките за заключване позволяват пропускане на друг процес този ред
- Клаузата OUTPUT връща данни на извикващия
Опитайте това... (редактиране:задържането е премахнато)
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
Ако не, може да се нуждаете от отделен избор
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 ...
Моля, вижте това за повече:Условие за надпревара на опашката на SQL Server Process