त्रुटि होने पर ट्रांज़ैक्शन को रोलबैक करना
काम के पहले दिन, आपको बैंक में धन-स्थानांतरण दर्ज करने वाली ट्रांज़ैक्शंस सेटअप करने का काम दिया गया है.
आप एक सरल स्क्रिप्ट तैयार करना चाहते हैं, जिसमें $100 account_id = 1 से ट्रांसफर होकर account_id = 5 में जाए. उसके बाद, वे मूवमेंट्स transactions टेबल में रजिस्टर हो जाएँ. आपको लगता है कि आपने सब ठीक लिखा है, लेकिन सतर्क रहते हुए, आप सब कुछ जाँचना पसंद करते हैं!
वास्तव में, आपसे एक गलती हुई. अकाउंट 5 के लिए नई ट्रांज़ैक्शन इन्सर्ट करने के बजाय, आपने अकाउंट 500 के लिए कर दी, जो मौजूद नहीं है.
भविष्य की त्रुटियों से बचने के लिए, आपकी स्क्रिप्ट ऐसी होनी चाहिए कि किसी भी त्रुटि पर हर बदलाव को रोलबैक कर दे. अगर सब कुछ सही रहता है, तो ट्रांज़ैक्शन को कमिट कर दिया जाए.
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में Transactions और Error Handling
अभ्यास निर्देश
- ट्रांज़ैक्शन शुरू करें.
- ऑपरेशन में हुई गलती को ठीक करें.
- अगर कोई त्रुटि न हो, तो ट्रांज़ैक्शन कमिट करें.
CATCHब्लॉक के अंदर ट्रांज़ैक्शन को रोलबैक करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
BEGIN TRY
-- Begin the transaction
BEGIN ___;
UPDATE accounts SET current_balance = current_balance - 100 WHERE account_id = 1;
INSERT INTO transactions VALUES (1, -100, GETDATE());
UPDATE accounts SET current_balance = current_balance + 100 WHERE account_id = 5;
-- Correct it
INSERT INTO transactions VALUES (500, 100, GETDATE());
-- Commit the transaction
___ TRAN;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Rollback the transaction
___ ___;
END CATCH