http://www.postgresql.org/docs/9.2/static/transaction-iso.html
O modo Leitura Repetível fornece uma garantia rigorosa de que cada transação tenha uma visão completamente estável do banco de dados. No entanto, essa visão nem sempre será sempre consistente com alguma execução serial (uma de cada vez) de transações simultâneas do mesmo nível. Por exemplo, mesmo uma transação somente leitura nesse nível pode ver um registro de controle atualizado para mostrar que um lote foi concluído, mas não ver um dos registros detalhados que fazem parte do lote logicamente porque leu uma revisão anterior do registro de controle . As tentativas de impor regras de negócios por transações executadas nesse nível de isolamento provavelmente não funcionarão corretamente sem o uso cuidadoso de bloqueios explícitos para bloquear transações conflitantes.
Não é uma leitura fantasma, o que não é possível no modo de leitura repetível?
A documentação diz que uma consulta em uma transação de leitura repetível vê um instantâneo desde o início da transação; então, como seria possível uma consulta ler dados inconsistentes?
fonte
As leituras fantasmas (não confunda isso com leituras não repetíveis) são possíveis no nível de isolamento "Leitura repetível" ... em princípio. Mas o comportamento de fato do Postgresql quando você seleciona "Leitura repetível" é mais forte que o padrão (quase um isolamento "Serializable"), de modo que, na verdade, você não terá leituras fantasmas. Documentos :
Agora, o que dizer dessa ressalva "essa visão nem sempre será consistente com alguma execução serial (uma de cada vez) de transações simultâneas do mesmo nível"? Eu acho (não tenho certeza) que isso significa que o instantâneo "de fora" (corrigido no início da transação) pode eventualmente incluir linhas de outras transações, mas falha ao incluir outras linhas da mesma transação.
fonte