Ao tentar executar esta consulta, minha suposição foi que o PostgreSQL executará a atualização duas vezes seguidas com id = 0 tendo contador inicial = 0 e terminaria com contador = 11, mas na verdade é executado apenas uma vez e resulta em contador = 6 .
Alguém pode ajudar a descobrir o porquê? Passei um bom tempo tentando descobrir isso e não consigo entender por que isso acontece.
with duplicatedids as
((select 0 as idx, 6 as v) union
(select 1 as idx, 5 as v))
update verify_seq_update
set counter = counter + duplicatedids.v
from duplicatedids
where verify_seq_update.id <= duplicatedids.idx ;