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