ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Dentro de uma transação, defina FIELD48 como mature+ se o total de depósitos a vencer for menor que US$ 500 mil e crie um savepoint matureplus_flag_set.
  • Defina FIELD48 como mature- se o total de depósitos a vencer estiver entre US\( 500 mil e US\) 1 milhão e então crie um savepoint matureminus_flag_set.
  • Defina FIELD48 como mature-- se o total de depósitos a vencer for maior que US\( 100 mil (não US\) 1 milhão) — “acidentalmente” omitindo um 0.
  • Desfaça até logo após termos definido os registros mature- e conte todos os bancos com um cronograma de vencimento de depósito mature--.

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--';
Editar e executar o código