Atomic UPDATE .. SELECT no Postgres
Eu estou construindo um tipo de mecanismo de enfileiramento. Existem linhas de dados que precisam de processamento e um sinalizador de status. Estou usando umupdate .. returning
cláusula para gerenciá-lo:
UPDATE stuff
SET computed = 'working'
WHERE id = (SELECT id from STUFF WHERE computed IS NULL LIMIT 1)
RETURNING *
A parte de seleção aninhada é o mesmo bloqueio da atualização ou tenho uma condição de corrida aqui? Se sim, a seleção interna precisa ser umselect for update
?