No nível de isolamento de confirmação de leitura:
Se bem entendi, no caso de não haver linhas pré-existentes que resultariam em conflito, duas transações simultâneas com INSERT ... ON CONFLICT DO NOTHING
- que entrariam em conflito entre elas - terão o seguinte comportamento:
- Uma das transações irá inserir a linha.
- A segunda transação aguardará a confirmação da primeira transação e não fará nada (ou inserirá em caso de reversão da primeira transação).
A linha será bloqueada na segunda transação?
Além disso, acho que o comportamento da segunda transação seria exatamente o mesmo do caso em que já temos uma linha (confirmada) e fazemos um conflito INSERT ... ON CONFLICT DO NOTHING
?
An
INSERT ... ON CONFLICT DO NOTHING
não bloqueará a linha se detectar um conflito. Você pode dizer isso facilmente porque o valorxmax
da linha permanecerá inalterado após a operação.A operação terá o mesmo efeito independentemente de a linha conflitante ser antiga ou apenas inserida simultaneamente.