У меня есть хранимая процедура, которая выполняет следующее (упрощенно):
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRANSACTION
DECLARE @intNo int
SET @intNo = (SELECT MAX(intNo) + 1 FROM tbl)
INSERT INTO tbl(intNo)
Values (@intNo)
SELECT intNo
FROM tbl
WHERE (intBatchNumber = @intNo - 1)
COMMIT TRANSACTION
Моя проблема заключается в том, что, когда два или более пользователей выполняют это одновременно, я получаю взаимоблокировки.Теперь, как я понимаю, в тот момент, когда я делаю свой первый выбор в процедуре, это должно создать блокировку в tbl.Если вторая процедура затем вызывается, пока первая процедура еще выполняется, она должна дождаться ее завершения, верно?
В настоящий момент это вызывает тупик, есть идеи?