Savepoints e rollback
Continuando a pensar sobre o volume de depósitos a prazo que vencem em breve. Aqueles acima de 250 mil têm o maior impacto nos resultados vistos durante o mercado de 2008.
RCONHK12 (>=250k) armazena os que vencem nos próximos três meses e RCONHK13 (>=250k) armazena os que vencem entre 3 e 12 meses. Se esses valores estiverem acima de US\( 1 milhão, isso pode causar falta de caixa no banco, pois geralmente são clientes maiores que podem também retirar outros ativos. Por outro lado, há um fator positivo se esses valores forem menores que US\) 500 mil.
Eu cometi alguns erros no meu código ao definir o valor errado para aqueles acima de US$ 500 mil!
Este exercício faz parte do curso
Transações e Tratamento de Erros no PostgreSQL
Instruções do exercício
- Dentro de uma transação, defina
FIELD48comomature+se o total de depósitos a vencer for menor que US$ 500 mil e crie um savepointmatureplus_flag_set. - Defina
FIELD48comomature-se o total de depósitos a vencer estiver entre US\( 500 mil e US\) 1 milhão e então crie um savepointmatureminus_flag_set. - Defina
FIELD48comomature--se o total de depósitos a vencer for maior que US\( 100 mil (não US\) 1 milhão) — “acidentalmente” omitindo um0. - Desfaça até logo após termos definido os registros
mature-e conte todos os bancos com um cronograma de vencimento de depósitomature--.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
BEGIN;
-- Update FIELD48 to indicate a positive maturity rathing when less than $500 thousand.
UPDATE ffiec_reci
SET ___ = '___'
WHERE RCONHK12 + RCONHK13 < 500000;
-- Set a savepoint
SAVEPOINT ___;
-- Update FIELD48 to indicate a negative maturity rathing when between $500 thousand and $1 million.
UPDATE ffiec_reci
___
WHERE RCONHK12 + RCONHK13 BETWEEN ___ AND ___;
-- Set a savepoint
SAVEPOINT ___;
-- Accidentailly update FIELD48 to indicate a double negative maturity rating when more than 100K
UPDATE ffiec_reci
SET ___ = '___'
WHERE RCONHK12 + RCONHK13 > 100000;
-- Rollback to before the last mistake
ROLLBACK TO ___;
-- Select count of records with a double negative indicator
SELECT count(FIELD48)
from ffiec_reci
WHERE FIELD48 = 'mature--';