2013-10-02 3 views
4

Мне нужно заблокировать строку в таблице, чтобы никто не мог прочитать эту строку, пока я выполняю процедуру. В этой процедуре я использую BEGIN TRAN. Таким образом, эта запись, которую я пытаюсь заблокировать, не выполняется во время процесса. Возможно ли это?Заблокировать строку в таблице SQL Server

+1

Возможный повторный вопрос: http://stackoverflow.com/questions/111652/locking-row-in-sql-2005-2008 – granadaCoder

ответ

0

В зависимости от того, что цель вашей хранимой процедуры:

- В случае, если он изменяет указанную строку, вы можете опираться на transaction levels

SET TRANSACTION ISOLATION УРОВЕНЬ SERIALIZABLE

НАЧАТЬ СДЕЛКУ

--UPDATE/INSERT/УДАЛИТЬ ваш номер здесь

...

COMMIT TRANSACTION SET TRANSACTION ISOLATION УРОВЕНЬ REPEATABLE READ

- Использование lock hints

SET TRANSACTION ИЗОЛЯЦИЯ УРОВЕНЬ SERIALIZABLE

BEGIN TRANSACTION

ВЫБОР столбец1, столбец2

ОТ yourTable С (ROWLOCK)

WHERE ID = YourRecordId

...

COMMIT TRANSACTION

SET Уровень изоляции транзакций ПОВТОРНОЕ ПРОЧИТАНИЕ

Смежные вопросы