Взаимоблокировки в PostgreSQL при запуске UPDATE

Я немного запутался, читая о взаимоблокировках PostgreSQL.

Типичный пример взаимоблокировки:

-- Transaction 1
UPDATE customer SET ... WHERE id = 1
UPDATE customer SET ... WHERE id = 2

-- Transaction 2
UPDATE customer SET ... WHERE id = 2
UPDATE customer SET ... WHERE id = 1

Но что, если я изменю код следующим образом:

-- Transaction 1
UPDATE customer SET ... WHERE id IN (1, 2)

-- Transaction 2
UPDATE customer SET ... WHERE id IN (1, 2)

Возможна ли здесь взаимоблокировка?

По сути, мой вопрос таков: во втором случае PostgreSQL блокирует строки одну за другой или блокирует всю область действия, охватываемую условием WHERE?

Заранее спасибо!

28
задан kgrittn 30 October 2013 в 20:52
поделиться