Deadlocks no PostgreSQL ao executar o UPDATE
Estou um pouco confuso lendo sobre deadlocks do PostgreSQL.
Um típico exemplo de impasse é:
-- 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
Mas e se eu mudar o código da seguinte forma:
-- Transaction 1
UPDATE customer SET ... WHERE id IN (1, 2)
-- Transaction 2
UPDATE customer SET ... WHERE id IN (1, 2)
Será uma possibilidade de impasse aqui?
Essencialmente, minha pergunta é:No segundo caso, o PostgreSQL bloqueia as linhas uma a uma ou bloqueia todo o escopo coberto pelaWHERE
condição?
Desde já, obrigado!