У меня есть большая таблица с миллионами записей, и я пытаюсь использовать TABLOCKX
, я должен обновить некоторые данные исключительно.
Я проверяю эту транзакцию
BEGIN TRANSACTION
SELECT *
FROM [MyDatabase].[dbo].[MyTable] WITH (TABLOCKX)
WHERE 0 = 1
WAITFOR DELAY '00:30'
ROLLBACK TRANSACTION
Если я попытаюсь выбрать данные таким образом
SELECT *
FROM [MyDatabase].[dbo].[MyTable]
В таблице нет БЛОКИРОВКИ, я могу ПРОЧИТАТЬ данные.
Но я обнаружил, что, если я попытаюсь выбрать из таблицы другим способом, замок работает,
SELECT *
FROM [MyDatabase].[dbo].[MyTable] WITH (TABLOCKX)
Почему? Я попытался создать еще один табличный тест с записью 3 o 4, и блокировка работает без "WITH (TABLOCKX)".