Bạn có thể nhận được một điều kiện đua.
Nó có thể được thực hiện trong một câu lệnh:
- Bạn có thể chỉ định trong một CẬP NHẬT
- Các gợi ý về khóa cho phép một quy trình khác bỏ qua hàng này
- Mệnh đề OUTPUT trả về dữ liệu cho người gọi
Hãy thử điều này ... (chỉnh sửa:đã loại bỏ khóa giữ)
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
Nếu không, bạn có thể cần một lựa chọn riêng
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 ...
Vui lòng xem phần này để biết thêm: Điều kiện chạy đua hàng đợi quy trình máy chủ SQL