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+पर सेट करें और एक SAVEPOINTmatureplus_flag_setसेट करें. - अगर total maturing deposits $500 thousand और $1 million के बीच हों तो
FIELD48कोmature-पर सेट करें, फिर एक SAVEPOINTmatureminus_flag_setसेट करें. - अगर total maturing deposits $100 thousand से अधिक हों (ना कि $1 million) तो
FIELD48कोmature--पर सेट करें — यहाँ "गलती से" एक0छोड़ दिया गया है. - ठीक वहाँ तक undo करें जहाँ हमने
mature-रिकॉर्ड्स सेट किए थे, और उन सभी बैंकों की गणना करें जिनका deposit maturity schedulemature--है.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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--';