] निम्नलिखित उदाहरण पर विचार करें:
tx, irr: = db.begin () अगर गलत! = nil { log.fatal (गलत) } defer tx.rollback () // क्यों defer? रोलबैक को स्थगित करना यह सुनिश्चित करता है कि इसे हमेशा कहा जाता है, भले ही निम्नलिखित संचालन त्रुटियों का सामना करते हैं या कोड एक मैनुअल रोलबैक से पहले अचानक लौटता है। &&&]
कोई भी आश्चर्य हो सकता है कि अगर कोई त्रुटि होती है तो पहले लेन -देन को पहले और मैन्युअल रूप से रोलबैक क्यों न करें। यह दृष्टिकोण अक्षम है क्योंकि यह डेटाबेस में अनाथ रिकॉर्ड या असंगति के निर्माण को जन्म दे सकता है। यह सुनिश्चित करता है कि यदि निम्नलिखित संचालन विफल हो तो रोलबैक होगा। यहां बताया गया है कि वर्कफ़्लो कैसे प्रकट होता है:यदि निम्न संचालन (जैसे, stmt.exec ()) सफल होता है, तो tx.commit () कॉल सफल है, और लेनदेन प्रतिबद्ध है।
tx, err := db.Begin() if err != nil { log.Fatal(err) } defer tx.Rollback() // Why defer?
सादगी:
रोलबैक रोलबैक में त्रुटि को सरल बनाता है और स्थिरता सुनिश्चित करता है।]
दक्षता:
त्रुटियों के मामले में अनाथ रिकॉर्ड या डेटाबेस असंगति बनाने से बचता है। एक प्रतिबद्ध लेनदेन पर tx.rollback () को कॉल करने का कोई प्रभाव नहीं है, क्योंकि एक प्रतिबद्ध लेनदेन को वापस नहीं लिया जा सकता है। ] रोलबैक का उपयोग अन्य प्रकार के संसाधनों के लिए किया जा सकता है, जैसे कि लॉकिंग फाइल हैंडल या नेटवर्क कनेक्शन।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3