लूप के अंदर कमिट करना आम तौर पर एक बुरा विचार है (इसलिए किसी भी टूल को स्वचालित रूप से प्रतिबद्ध करने की इजाजत देता है)।
लूप के अंदर कमिट करने से रीस्टार्ट करने योग्य कोड लिखना बहुत कठिन हो जाता है। यदि आपको 3 पुनरावृत्तियों के बाद कोई त्रुटि मिलती है तो क्या होगा? अब आपने 2 UPDATE
. के परिणामों को सफलतापूर्वक पूरा कर लिया है बयान। संभवतः, आपको या तो यह पता लगाना होगा कि कौन सी पंक्तियों को अपडेट किया गया था और अपडेट को उलटने के लिए कोड लिखना होगा या आपको कोड जोड़ना होगा जो उन दो सफल yearid
के लिए डेटा को अपडेट करने के प्रयास से बचता है। मूल्य। यह निश्चित रूप से संभव है। लेकिन इसमें आपकी प्रगति को ट्रैक करने के लिए कोड का एक गुच्छा लिखना शामिल है और आम तौर पर आपके कोड को और अधिक जटिल बना देता है।
लूप के अंदर कमिट करना आपके कोड को बहुत धीमा कर देता है। कमिट करना आम तौर पर एक महंगा ऑपरेशन है। इसलिए, इसे लूप में करना आम तौर पर एक बुरा विचार है। यदि आपके पास केवल कुछ दर्जन लूप पुनरावृत्तियों हैं तो यह एक समस्या से कम नहीं है। लेकिन अगर आपके पास सैकड़ों या हजारों पुनरावृत्तियां हैं, तो आप अपना अधिकांश समय आसानी से खर्च कर सकते हैं।
लूप के अंदर कमिट करने से यह जोखिम काफी हद तक बढ़ जाता है कि आप ORA-01555 त्रुटि का कारण बनेंगे। MyTable
. के विरुद्ध आपकी क्वेरी डेटा के एक पठन सुसंगत दृश्य की आवश्यकता है। यदि आप लूप के अंदर प्रतिबद्ध हैं, हालांकि, आप Oracle को बता रहे हैं कि आपके सत्र को अब पुराने UNDO
की आवश्यकता नहीं है जानकारी। यदि Oracle UNDO
. को शुद्ध करने के लिए होता है डेटा जो आपको लूप के बाद के पुनरावृत्ति के लिए चाहिए, आपको एक त्रुटि मिलेगी। और फिर आप गैर-पुनरारंभ करने योग्य कोड के साथ काम कर रहे हैं जहां आप सफलतापूर्वक एन पुनरावृत्तियों के माध्यम से चले गए हैं लेकिन आप नहीं जानते कि कौन से वर्ष संसाधित किए गए हैं या जिन्हें संसाधित करने की आवश्यकता है।
लूप के अंदर कमिट करना डेटा संगतता समस्याएँ पैदा कर सकता है। उदाहरण के लिए, यदि कोई अन्य सत्र रिपोर्ट चला रहा है, तो उन रिपोर्ट के लिए आंशिक रूप से अपडेट किया गया डेटा देखना आसान होता है, जिसका अर्थ अक्सर यह होगा कि डेटा असंगत होगा। यदि 3 वर्षों का डेटा बदल गया है लेकिन अन्य वर्षों में नहीं बदला है, तो रिपोर्ट को समझना बहुत मुश्किल हो सकता है और लोग (या प्रक्रियाएं) आसानी से गलत निर्णय ले सकते हैं।
लूप के अंदर कमिट करना भी आपके कोड को कम पुन:प्रयोज्य बनाता है। यदि आपके कोड में कमिट (या ब्लॉक के अंदर आपके द्वारा स्थापित सेवपॉइंट के अलावा अन्य रोलबैक) शामिल हैं, तो इसे कोड के किसी अन्य भाग द्वारा नहीं कहा जा सकता है जो नहीं चाहता कि उसका लेनदेन अभी तक किया जाए। इससे लोग लेन-देन नियंत्रण के बिना आपके तर्क को फिर से लागू करने की कोशिश करते हैं या गलत तरीके से लेन-देन की अखंडता का उल्लंघन करते हैं जो अनिवार्य रूप से उन्हें ऐसे एप्लिकेशन बनाने के लिए प्रेरित करता है जो डेटा संगतता मुद्दों को पेश करते हैं।