День добрый!
Интересует такой вопрос...
Есть процедура, которая добавляет строку в таблицу при определенных условиях, соответственно ID для этого условия увеличивается на 1. Код процедуры примерно такой:
Хотелось бы быть уверенным, что если практически одновременно запускаются две процедуры, то что происходит в строке:
?
Могу ли я быть уверенным, что одна из процедур блокирует чтение из таблицы до тех пор, пока не закончится транзакция, либо нужны какие-то дополнительные подсказки?
Спасибо!
Интересует такой вопрос...
Есть процедура, которая добавляет строку в таблицу при определенных условиях, соответственно ID для этого условия увеличивается на 1. Код процедуры примерно такой:
BEGIN SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE BEGIN TRAN DECLARE @n INT SET @n = (SELECT max(Id)FROM MayTable) WHERE ... INSERT INTO MyTaBle (Id,Col_1) SELECT @n,'xyz' COMMIT END
Хотелось бы быть уверенным, что если практически одновременно запускаются две процедуры, то что происходит в строке:
SET @n = (SELECT max(Id)FROM MayTable) WHERE ...
?
Могу ли я быть уверенным, что одна из процедур блокирует чтение из таблицы до тех пор, пока не закончится транзакция, либо нужны какие-то дополнительные подсказки?
Спасибо!