शुरू करेंमुफ़्त में शुरू करें

Savepoints और रोलबैक

आइए निकट भविष्य में मैच्योर होने वाली time deposits की मात्रा पर सोचना जारी रखें। 250K से अधिक वाली का 2008 के बाजार के दौरान दिखे नतीजों पर सबसे अधिक प्रभाव पड़ा था.

RCONHK12 (>=250k) अगले तीन महीनों में मैच्योर होने वाली राशियों को स्टोर करता है और RCONHK13 (>=250k) 3 से 12 महीनों के बीच एक्सपायर होने वाली राशियों को स्टोर करता है। अगर ये $1 million डॉलर से अधिक हैं, तो यह किसी बैंक में फंड्स की कमी पैदा कर सकता है, क्योंकि ये आम तौर पर बैंक के बड़े कस्टमर होते हैं जो अन्य एसेट्स भी निकाल सकते हैं। फिर से, अगर ये $500K से कम हों तो एक पॉज़िटिव फैक्टर माना जाता है।

मैंने अपने कोड में कुछ गलतियाँ कर दी हैं — $500 thousand से ऊपर वालों के लिए गलत वैल्यू सेट कर दी!

यह अभ्यास पाठ्यक्रम का हिस्सा है

PostgreSQL में Transactions और Error Handling

पाठ्यक्रम देखें

अभ्यास निर्देश

  • एक transaction के भीतर, अगर total maturing deposits $500 thousand से कम हों तो FIELD48 को mature+ पर सेट करें और एक SAVEPOINT matureplus_flag_set सेट करें.
  • अगर total maturing deposits $500 thousand और $1 million के बीच हों तो FIELD48 को mature- पर सेट करें, फिर एक SAVEPOINT matureminus_flag_set सेट करें.
  • अगर total maturing deposits $100 thousand से अधिक हों (ना कि $1 million) तो FIELD48 को mature-- पर सेट करें — यहाँ "गलती से" एक 0 छोड़ दिया गया है.
  • ठीक वहाँ तक undo करें जहाँ हमने mature- रिकॉर्ड्स सेट किए थे, और उन सभी बैंकों की गणना करें जिनका deposit maturity schedule mature-- है.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

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--';
कोड संपादित करें और चलाएँ