MySQL संग्रहीत प्रक्रियाओं में लेनदेन संबंधी समस्याओं को हल करना
MySQL संग्रहीत प्रक्रियाओं के भीतर लेनदेन को लागू करने का प्रयास करते समय, डेवलपर्स को अप्रत्याशित त्रुटियों का सामना करना पड़ सकता है। यह आलेख सिंटैक्स और तार्किक त्रुटियों का पता लगाएगा जो लेनदेन संबंधी संग्रहीत प्रक्रियाओं के सफल निष्पादन को रोक सकते हैं। संग्रहीत प्रक्रिया में लेनदेन को लागू करने का प्रयास। MySQL दस्तावेज़ का पालन करने के बावजूद, प्रक्रिया सफलतापूर्वक निष्पादित होने में विफल रहती है और परिवर्तनों को सहेजने में असमर्थता का संकेत देती है। आगे निरीक्षण करने पर, कोड वाक्यात्मक रूप से सही प्रतीत होता है।
कोड का विश्लेषण
प्रदान किया गया कोड स्निपेट इस प्रकार है:
BEGIN घोषणापत्र INT; SQLException SQLWarning के लिए निकास हैंडलर घोषित करें शुरू रोलबैक; अंत लेनदेन प्रारंभ करें; --विकल्प 5 जोड़ें product_option(product_id,option_id,आवश्यक) मानों में डालें(insertedProductID,5,0); SET poid = (SELECT LAST_INSERT_ID()); उत्पाद_विकल्प_मान में डालें (उत्पाद_विकल्प_आईडी, उत्पाद_आईडी, विकल्प_आईडी, विकल्प_मान_आईडी, मात्रा, घटाना, कीमत, मूल्य_उपसर्ग, अंक, अंक_उपसर्ग, वजन, वजन_उपसर्ग) मान (पोइड, सम्मिलित उत्पाद आईडी, 5,50,0,0,4.99,' ',0,' ',0,' '); --विकल्प 12 जोड़ें product_option(product_id,option_id,आवश्यक) मानों में डालें(insertedProductID,12,1); --विकल्प 13 जोड़ें product_option(product_id,option_id,आवश्यक) मानों में डालें(insertedProductID,13,0); प्रतिबद्ध; END
त्रुटियों की पहचान करनाBEGIN DECLARE poid INT; DECLARE EXIT HANDLER FOR SQLEXCEPTION SQLWARNING BEGIN ROLLBACK; END START TRANSACTION; -- ADD option 5 INSERT INTO product_option(product_id,option_id,required) VALUES(insertedProductID,5,0); SET poid = (SELECT LAST_INSERT_ID()); INSERT INTO product_option_value(product_option_id,product_id,option_id,option_value_id,quantity,subtract,price,price_prefix,points,points_prefix,weight,weight_prefix) VALUES(poid,insertedProductID,5,50,0,0,4.99,' ',0,' ',0,' '); -- ADD option 12 INSERT INTO product_option(product_id,option_id,required) VALUES(insertedProductID,12,1); -- ADD option 13 INSERT INTO product_option(product_id,option_id,required) VALUES(insertedProductID,13,0); COMMIT; END
में अल्पविराम का अभाव निकास हैंडलर:
BEGIN घोषणापत्र INT; SQLException, SQLWARNING के लिए निकास हैंडलर घोषित करें शुरू रोलबैक; अंत; लेनदेन प्रारंभ करें; --विकल्प 5 जोड़ें product_option(product_id,option_id,आवश्यक) मानों में डालें(insertedProductID,5,0); SET poid = (SELECT LAST_INSERT_ID()); उत्पाद_विकल्प_मान में डालें (उत्पाद_विकल्प_आईडी, उत्पाद_आईडी, विकल्प_आईडी, विकल्प_मान_आईडी, मात्रा, घटाना, कीमत, मूल्य_उपसर्ग, अंक, अंक_उपसर्ग, वजन, वजन_उपसर्ग) मान (पोइड, सम्मिलित उत्पाद आईडी, 5,50,0,0,4.99,' ',0,' ',0,' '); --विकल्प 12 जोड़ें product_option(product_id,option_id,आवश्यक) मानों में डालें(insertedProductID,12,1); --विकल्प 13 जोड़ें product_option(product_id,option_id,आवश्यक) मानों में डालें(insertedProductID,13,0); प्रतिबद्ध; अंत;
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3