Usando um nível de isolamento
Como você viu no vídeo, às vezes é importante selecionar um nível de isolamento para uma transação específica. O ideal é usar START TRANSACTION (um alias de BEGIN TRANSACTION) para deixar claro que algo está diferente. Você pode especificar um ISOLATION LEVEL ao iniciar a transação.
Aqui vamos usar REPEATABLE READ, que nos protege contra dirty reads, nonrepeatable reads e phantom reads. Nos dados do FFEIC, RCON2210 é o campo de depósitos à vista, e rastreia todas as contas-correntes em aberto, cheques emitidos pelo banco e créditos não lançados. Eles podem ser um passivo para o banco se houver uma corrida por fundos por qualquer motivo. Vamos encontrar todos os bancos com mais de US$ 100.000.000 em depósitos à vista.
Este exercício faz parte do curso
Transações e Tratamento de Erros no PostgreSQL
Instruções do exercício
- Inicie uma transação com repeatable read.
- Selecione todos os registros com
RCON2210acima de US$ 100.000.000 em depósitos à vista. - Selecione novamente todos os registros com
RCON2210ainda acima de US$ 100.000.000 em depósitos à vista. - Faça o commit da transação.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
-- Create a new transaction with an isolation level of repeatable read
___ TRANSACTION ___ LEVEL ___ ___;
-- Count of records over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Count of records still over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Commit the transaction
___;