В кусочке SQL down я хотел бы получить и удалить следующую строку таблицы, соответствующую определенным критериям.Однако я хочу запретить другим службам, выполняющим тот же бит SQL, возвращать ту же строку.Я думал о транзакциях или блокировках строк, но не представляю, как можно мне помочь.
DECLARE @tblTempRow TABLE(intUserID int, intBlobID int)
-- Get the next match and remember in temp table. I want to prevent that other processes return the same row.
INSERT INTO @tblTempRow(intUserID, intBlobID)
SELECT TOP 1 intUserID, intBlobID FROM Schedule WHERE intScheduleType = @intScheduleType
-- Delete if requested.
IF(@intDeleteAfterGet = 1)
BEGIN
DELETE FROM
Schedule
WHERE
intUserID = (SELECT intUserID FROM @tblTempRow)
AND intBlobID = (SELECT intBlobID FROM @tblTempRow)
AND intScheduleType = @intScheduleType
END
-- Return the temp table.
SELECT intUserID, @intScheduleType, intBlobID FROM @tblTempRow