TRY...CATCH संरचना में @@TRANCOUNT जाँचना
अकाउंट 10 के ओनर ने एक रैफ़ल जीता है और उन्हें $200 दिए जाएँगे। आप एक साधा स्क्रिप्ट तैयार करते हैं ताकि अकाउंट 10 के current_balance में वे $200 जोड़ दिए जाएँ। आपको लगता है आपने सब कुछ ठीक लिखा है, लेकिन आप अपना कोड जाँचना पसंद करते हैं।
असल में, पैसे जोड़ते समय आपसे एक छोटी-सी गलती हो गई: SET current_balance = 'current_balance' + 200. आपने 'current_balance' को स्ट्रिंग की तरह लिख दिया, जिससे एक एरर जेनरेट होता है।
जो स्क्रिप्ट आप बनाएँगे, उसे एरर होने पर हर बदलाव को रोलबैक कर देना चाहिए और यह जाँचनी चाहिए कि कोई ओपन ट्रांज़ैक्शन है या नहीं। अगर सब कुछ ठीक चलता है, तो ट्रांज़ैक्शन को कमिट किया जाना चाहिए — और तब भी यह जाँचते हुए कि कोई ओपन ट्रांज़ैक्शन है या नहीं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में Transactions और Error Handling
अभ्यास निर्देश
- ट्रांज़ैक्शन शुरू करें.
- ऑपरेशन में हुई गलती ठीक करें.
TRYब्लॉक के अंदर, जाँचें कि कोई ट्रांज़ैक्शन है या नहीं और उसे कमिट करें.CATCHब्लॉक के अंदर, जाँचें कि कोई ट्रांज़ैक्शन है या नहीं और उसे रोलबैक करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
BEGIN TRY
-- Begin the transaction
___ ___;
-- Correct the mistake
UPDATE accounts SET current_balance = 'current_balance' + 200
WHERE account_id = 10;
-- Check if there is a transaction
IF ___ > 0
-- Commit the transaction
___ ___;
SELECT * FROM accounts
WHERE account_id = 10;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Check if there is a transaction
IF ___ > 0
-- Rollback the transaction
___ ___;
END CATCH