Я немного запутался, читая о взаимоблокировках 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
?
Заранее спасибо!