As linhas são bloqueadas na ordem do
ORDER BY cláusula como estava quando a tabela foi verificada . A consulta é executada e as linhas ordenadas, então o PostgreSQL bloqueia as linhas em ordem. Essencialmente,
ORDER BY acontece antes de FOR UPDATE . Agora pode acontecer que bloqueie um bloco de linha devido a bloqueios mantidos por transações simultâneas. Se isso acontecer, e estamos no
READ COMMITTED nível de isolamento, PostgreSQL aguarda até conseguir o cadeado e buscar a versão atual da linha, que ele bloqueia. Se a transação concorrente modificou as colunas que definem a ordenação, o resultado final não estará na ordem definida por
ORDER BY .