Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ещё раз про блокировки.  [new]
Daba
Member

Откуда:
Сообщений: 127
На работе один перец заявил что если выполнить запрос типа:
UPDATE MyTab
SET Field1 = SomeValue
WHERE Field2 = (SELECT TOP 1 Field2 
                FROM MyTab (UPDLOCK)
                WHERE(some filter) 
                ORDER BY Priority) 
то хинт UPDLOCK не сработает несмотря на то что весь запрос неявно транзактивен. Только использование явной транзакции позволит выполнить запрос так как задумано.
Т.е., типа, нужно так:

BEGIN TRAN

UPDATE MyTab
SET Field1 = SomeValue
WHERE Field2 = (SELECT TOP 1 Field2 
                FROM MyTab (UPDLOCK)
                WHERE(some filter) 
                ORDER BY Priority)  
                
COMMIT TRAN

Особенного вреда в такой транзакции я не вижу, но и тупо верить не могу. Тем более что все это мне кажется, мягко говоря, странно.

Есть соображения?
14 июн 09, 11:55    [7297154]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить