Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Вопрос о SELECT FOR UPDATE  [new]
PowerEdge
Member

Откуда:
Сообщений: 26
Добрый день.

Объсните, пожалуйста, механизм работы выражения SELECT FOR UPDATE. Блокирует ли он все записи в выборке одновременно или позаписьно?

Представте такую сетуацию:

имеется некая таблица (table1) с 3-мя записями: А,В,С
а также 2 транзакции, обновляющие эти записи в такой последовательности:


1) Транзакция 1 обновляет запись С
2) Транзакция 2 Выполнят запрос select * from table1 for update
3) Транзакция 1 обновляет запись А

Будет ли в данной ситуации дэдлок (так как Тр.1 держит С и ждёт блокировку А, а Тр.2 заблокировала А и В и ждёт блокировку С) или транзакция 2 будет ожидать пока снимется блокировка с записи С, не блокируюя при этом А и В?
2 ноя 09, 11:16    [7869591]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о SELECT FOR UPDATE  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Добрый день.
PowerEdge
Объсните, пожалуйста, механизм работы выражения SELECT FOR UPDATE. Блокирует ли он все записи в выборке одновременно или позаписьно?
Позаписьно.
Когда именно это происходит (в момент fetch или open) - зависит от уровня изоляции.
2 ноя 09, 14:40    [7871315]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить