Пища для размышлений
create table test(id int)
insert test values(1)
GO
Теперь в одном окне запустите этот
begin tran
insert into test
select * from test with (holdlock, updlock)
waitfor delay '00:00:30'
commit
пока он работает, откройте другое соединение и сделайте это
begin tran
insert into test
select * from test with (holdlock, updlock)
commit
как вы можете видеть, вторая вставка не произойдет, пока первая транзакция не будет завершена
Теперь уберите подсказки блокировки и наблюдайте разницу