Níveis de isolamento e transações
SERIALIZABLE é um nível de isolamento que tira um snapshot do registro quando a primeira instrução de consulta ou atualização é executada e gera erro se os dados forem alterados de qualquer forma fora da transação. Observe que a transação pode fazer outras coisas, como declarar variáveis, antes da primeira consulta.
Você usará novamente o conjunto de dados da FFIEC para trabalhar com dados em que a variação anual nos depósitos de poupança RCON0352 é afetada por um grande desvio.
Este exercício faz parte do curso
Transações e Tratamento de Erros no PostgreSQL
Instruções do exercício
- Inicie uma transação no modo
SERIALIZABLE. - Atualize todos os registros em que
RCON0352é maior que 100.000 com uma redução de 50%. - Dê
COMMITna transação. - Selecione a contagem dos registros que ainda têm
RCON0352maior que 100.000.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
-- Create a new transaction with a serializiable isolation level
___ TRANSACTION ISOLATION LEVEL ___;
-- Update records with a 50% reduction if greater than 100000
___ ffiec_reci
SET ___ = ___ * 0.5
WHERE RCON0352 > 100000;
-- Commit the transaction
___;
-- Select a count of records still over 100000
SELECT ___(RCON0352)
FROM ___
WHERE RCON0352 > 100000;