Не уверен, что я правильно понимаю ваш вопрос, но если вы хотите наложить более строгую блокировку, чем стандартная SQL Server, то вы можете либо повысить уровень изоляции, либо использовать подсказку о блокировке. Это может быть полезно, если вам сначала нужно что-то выбрать, а затем, основываясь на значении SELECT, сделать ОБНОВЛЕНИЕ. Чтобы избежать фантомного ОБНОВЛЕНИЯ от другой транзакции (в которой ранее выбранное значение было изменено в ч / б SELECT и UPDATE), вы можете установить блокировку обновления для оператора SELECT.
Например:
select * from mytable with (holdlock, xlock)
Обратите внимание, что вышеприведенный оператор SELECT использует более строгую блокировку обновления и удерживает эту блокировку на протяжении транзакции. Вы также хотели бы заключить свои заявления в явную транзакцию, например:
begin transaction
select * from mytable with (holdlock, xlock) -- exclusive lock held for the entire transaction
-- more code here...
update mytable set col='whatever' where ...
commit transaction
Будьте осторожны, конечно, для длительных транзакций.