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

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