Savepoint'ler ve geri alma
Yakın gelecekte vadesi dolacak vadeli mevduat tutarı üzerinde düşünmeye devam edelim. 250 binin üzerindekiler, 2008 piyasasında görülen sonuçlar üzerinde en büyük etkiye sahipti.
RCONHK12 (>=250k) önümüzdeki üç ayda vadesi dolacak olanları, RCONHK13 (>=250k) ise 3 ile 12 ay arasında vadesi dolacak olanları saklar. Bunlar 1 milyon doların üzerindeyse, genellikle bankanın daha büyük müşterileri oldukları ve diğer varlıklarını da çekebilecekleri için bankada fon sıkıntısına yol açabilir. Yine, bunlar 500 bin doların altındaysa bu pozitif bir faktördür.
500 bin doların üzerindekiler için yanlış değer ayarlayarak kodumda birkaç hata yaptım!
Bu egzersiz
PostgreSQL'de İşlemler (Transaction) ve Hata Yönetimi
kursunun bir parçasıdırEgzersiz talimatları
- Bir işlem (transaction) içinde, toplam vadesi dolacak mevduat 500 bin doların altındaysa
FIELD48değerinimature+yap ve bir savepointmatureplus_flag_setayarla. - Toplam vadesi dolacak mevduat 500 bin dolar ile 1 milyon dolar arasındaysa
FIELD48değerinimature-yap, sonra bir savepointmatureminus_flag_setayarla. - Toplam vadesi dolacak mevduat 100 bin doların üzerindeyse (1 milyon değil)
FIELD48değerinimature--yap — "kazara" bir0eksik yazıyoruz. mature-kayıtlarını ayarladıktan hemen sonraya geri dön vemature--vade planına sahip tüm bankaları say.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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--';