pl sql transactions commit
पीएल एसक्यूएल लेनदेन के बारे में कमिट, रोलबैक और बचत बयानों के उदाहरणों के बारे में जानें:
इस लेख में, हम जारी रखेंगे PL / SQL श्रृंखला । में PL SQL पैकेज ट्यूटोरियल, हमने पैकेज, इसके फायदे, विनिर्देशों और संरचना के बारे में सीखा है।
यहां हम PL SQL लेनदेन और उनकी विशेषताओं का पता लगाएंगे। हम कुछ पीएल / एसक्यूएल बयानों पर चर्चा करेंगे जैसे कि कमिट, रोलबैक, बचत और इतने पर पीएल एसक्यूएल लेनदेन से संबंधित हैं।
हम PL SQL में LOCK TABLe और AUTOCOMMIT स्टेटमेंट के बारे में भी जानेंगे।
चर्चा के साथ शुरू करते हैं !!
आप क्या सीखेंगे:
पीएल एसक्यूएल लेनदेन
एक डेटाबेस में काम के परमाणु घटक जिसमें कई SQL कथन होते हैं, लेनदेन कहलाता है। इसे परमाणु के रूप में संदर्भित किया जाता है क्योंकि एक बार जब एसक्यूएल बयानों से प्रभावित परिवर्तन होते हैं, तो वे या तो (डेटाबेस के लिए अनिश्चितकालीन अद्यतन) कर सकते हैं या वापस लुढ़क सकते हैं (डेटाबेस में अपडेट को पूर्ववत करें)।
SQL स्टेटमेंट को कमिट करने की आवश्यकता है अन्यथा इसे वापस रोल किया जा सकता है और एसक्यूएल स्टेटमेंट को करने वाले सभी संशोधनों को पूर्ववत रहना चाहिए। यदि पीएल / एसक्यूएल कार्यक्रम लेनदेन के बीच में रुक जाता है, तो डेटाबेस पर कोई प्रभाव नहीं पड़ता है और यह अपनी मूल स्थिति में बहाल हो जाता है।
COMMIT और रोलबैक इस तथ्य का ध्यान रखते हैं कि डेटाबेस में परिवर्तन या तो सार्वकालिक या पूर्ववत हैं। SAVEPOINT बयान लेनदेन प्रसंस्करण में वर्तमान स्थिति को इंगित करता है।
लेनदेन प्रसंस्करण शुरू करें
प्रत्येक लेनदेन में एक शुरुआत और एक समाप्ति है।
निम्नलिखित घटनाएं लेन-देन की शुरुआत को चिह्नित करती हैं:
- डेटाबेस से कनेक्शन के बाद, पहले SQL स्टेटमेंट निष्पादित किया जाता है।
- पिछले SQL कथन के पूरा होने के बाद एक नया SQL कथन निष्पादित किया जाता है।
अंत लेनदेन प्रसंस्करण
प्रत्येक PL / SQL प्रोग्राम में एक COMMIT या रोलबैक कथन होना चाहिए। यह पूरी तरह से प्रोग्रामिंग लॉजिक पर निर्भर करता है कि क्या हमें लेन-देन के बाद कमिट या रोलबैक का उपयोग करना चाहिए।
यदि COMMIT या ROLLBACK कथनों का उपयोग नहीं किया जाता है, तो यह मेजबान वातावरण पर निर्भर करता है कि डेटाबेस की अंतिम स्थिति कैसी होनी चाहिए। उदाहरण के लिए, SQL * PLUS वातावरण में, यदि PL / SQL ब्लॉक कोड एक COMMIT या ROLLBACK स्टेटमेंट के बिना है, डेटाबेस की स्थिति कोड के उस ब्लॉक पर निर्भर करेगी जो उसके ठीक बाद निष्पादित होता है।
Oracle वातावरण में, यदि हम एक COMMIT स्टेटमेंट शामिल करते हैं या डेटा परिभाषा या डेटा कंट्रोल क्वेरी चलाने के बाद DISCONNECT, EXIT, या QUIT कमांड निष्पादित करते हैं, तो लेनदेन प्रतिबद्ध है। इसके अलावा, अगर हम एक रोलबैक विवरण शामिल करते हैं, तो लेन-देन पूर्ववत है।
इस प्रकार किसी भी नीचे के परिदृश्य के कारण लेनदेन को समाप्त किया जा सकता है:
- एक रोलबैक या COMMIT स्टेटमेंट निष्पादित किया जाता है।
- एक DDL क्वेरी ( उदाहरण के लिए, एक टेबल क्रिएशन स्टेटमेंट) निष्पादित किया जाता है, जिसके बाद COMMIT डिफ़ॉल्ट रूप से चलाया जाता है।
- एक DCL क्वेरी ( उदाहरण के लिए, एक GRANT स्टेटमेंट) निष्पादित किया जाता है, जिसके बाद COMMIT डिफ़ॉल्ट रूप से चलाया जाता है।
- उपयोगकर्ता डेटाबेस कनेक्शन समाप्त करता है।
- उपयोगकर्ता SQL * PLUS से बाहर आने के लिए EXIT स्टेटमेंट चलाता है, जिसके बाद COMMIT डिफ़ॉल्ट रूप से निष्पादित होता है।
- SQL * PLUS एक असामान्य समाप्ति का सामना करता है, जिसके बाद डिफ़ॉल्ट रूप से ROLLBACK निष्पादित होता है।
- DML क्वेरी सफलतापूर्वक नहीं चलती है, जिसके बाद डेटाबेस को मूल स्थिति में वापस लाने के लिए डिफ़ॉल्ट रूप से ROLLBACK चलाया जाता है।
स्थायी परिवर्तन के लिए कमिट
COMMIT स्टेटमेंट वर्तमान लेनदेन को समाप्त करने और लेनदेन द्वारा निष्पादित एक स्थायी संशोधन करने में सक्षम है। एक बार COMMIT निष्पादित होने के बाद, हम संशोधित डेटा को पकड़ सकते हैं।
जैसे ही COMMIT स्टेटमेंट चलाया जाता है, टेबल की सभी प्रभावित पंक्तियों को तालों से मुक्त कर दिया जाता है। यह हमें SAVEPOINT से छुटकारा पाने में भी मदद करता है। COMMIT स्टेटमेंट वैकल्पिक रूप से WORK स्टेटमेंट (COMMIT WORK) के साथ हो सकता है, जो केवल कोड पठनीयता में सुधार के लिए जोड़ा जाता है।
यदि COMMIT के समय कोई लेन-देन विफल हो जाता है और लेन-देन की स्थिति ज्ञात नहीं होती है, उस समय PL / SQL कोड में COMMENT पाठ डेटा डिक्शनरी में आईडी के साथ संग्रहीत किया जाता है।
लेनदेन के लिए सिंटैक्स COMMIT:
डिफ़ॉल्ट गेटवे उपलब्ध नहीं विंडोज़ 10 वाईफाई
COMMIT;
आइए हम TEACHERS नाम की एक तालिका पर विचार करें।
हमने नीचे दिए गए SQL स्टेटमेंट की मदद से TEACHERS टेबल बनाई है:
CREATE TABLE TEACHERS ( CODE INT NOT NULL, SUBJECT VARCHAR (15) NOT NULL, NAME VARCHAR (15) NOT NULL, PRIMARY KEY (CODE) );
इस तालिका में मान डालें और फिर निम्नलिखित तरीके से लेनदेन करें:
INSERT INTO TEACHERS VALUES (1, 'SELENIUM', 'TOM'); INSERT INTO TEACHERS VALUES (2, 'UFT', 'SAM'); INSERT INTO TEACHERS VALUES (3, 'JMETERE', 'TONK'); COMMIT;
अगला, नीचे क्वेरी निष्पादित की गई है:
SELECT * FROM TEACHERS;
आउटपुट:
परिवर्तनों को पूर्ववत करें
यदि एक वर्तमान लेन-देन एक रोलबैक कथन के साथ समाप्त हो जाता है, तो यह उन सभी संशोधनों को पूर्ववत कर देगा जो लेनदेन में होने वाले हैं।
एक रोलबैक विवरण में निम्नलिखित विशेषताएं हैं जो नीचे सूचीबद्ध हैं:
- डेटाबेस को एक मूल स्थिति के साथ एक बहाल स्टेटमेंट के साथ बहाल किया जाता है, जब हमने गलती से मेज से एक महत्वपूर्ण पंक्ति हटा दी हो।
- अपवाद की स्थिति में, जो SQL कथन की निष्पादन विफलता के कारण हुआ है, एक ROLLBACK स्टेटमेंट हमें उस प्रोग्राम के शुरुआती बिंदु पर कूदने में सक्षम बनाता है, जहाँ से हम उपचारात्मक उपाय कर सकते हैं।
- बिना COMMIT स्टेटमेंट के डेटाबेस में किए गए अपडेट को ROLLBACK स्टेटमेंट के साथ निरस्त किया जा सकता है।
लेन-देन के लिए सिंटैक्स:
ROLLBACK;
लेन-देन के साथ लेन-देन के लिए सिंटैक्स:
ROLLBACK (TO SAVEPOINT );
यहां ही save_n SAVEPOINT का नाम है।
आइए हम पहले से बनाए गए शिक्षक तालिका पर विचार करें।
रोलबैक के साथ कोड कार्यान्वयन:
DELETE FROM TEACHERS WHERE CODE= 3; ROLLBACK;
अगला, नीचे क्वेरी निष्पादित की गई है:
SELECT * FROM TEACHERS;
उपरोक्त कोड का आउटपुट होना चाहिए:
उपरोक्त कोड में, हमने एक DELETE स्टेटमेंट निष्पादित किया है, जो कि CODE के साथ शिक्षक के रिकॉर्ड को 3 के बराबर हटाने वाला है। हालाँकि, ROLLBACK स्टेटमेंट के कारण, डेटाबेस पर कोई प्रभाव नहीं पड़ता है, और डिलीट नहीं किया जाता है।
आंशिक परिवर्तन को वापस लेने के लिए समाधान
SAVEPOINT वर्तमान लेनदेन प्रसंस्करण बिंदु को नाम और पहचान देता है। यह आमतौर पर एक रोलबैक कथन के साथ जुड़ा हुआ है। यह पूरे लेनदेन को न छूकर हमें लेनदेन के कुछ वर्गों को वापस लाने में सक्षम बनाता है।
जैसे ही हम एक SAVEPOINT पर रोलबैक लागू करते हैं, उसमें शामिल सभी SAVEPOINTS उस विशेष SAVEPOINT को हटा देते हैं (यह है कि अगर हमने तीन SAVEPOINTS को चिह्नित किया है और दूसरे SAVEPOINT पर एक ROLLBACK लागू किया है, तो स्वचालित रूप से तीसरा SAVEPOINT हटा दिया जाएगा।)
एक COMMIT या एक रोलबैक विवरण सभी SAVEPOINTS को हटा देता है। SAVEPOINT को दिए गए नाम अघोषित पहचानकर्ता हैं और एक लेनदेन के अंदर कई बार फिर से लागू किए जा सकते हैं। लेन-देन के अंदर पुराने से वर्तमान स्थिति तक SAVEPOINT का एक आंदोलन है।
SAVEPOINT पर लागू एक रोलबैक केवल लेनदेन के चल रहे हिस्से को प्रभावित करता है। इस प्रकार एक SAVEPOINT सत्यापन बिंदुओं की स्थिति के द्वारा एक छोटे लेनदेन को छोटे वर्गों में विभाजित करने में मदद करता है।
लेन-देन के लिए सिंटैक्स
SAVEPOINT ;
यहाँ, save_n SAVEPOINT का नाम है।
आइए हम फिर से पहले बने शिक्षकों की तालिका पर विचार करें।
बचत के साथ रोलबैक का कोड कार्यान्वयन:
INSERT INTO TEACHERS VALUES (4, 'CYPRESS', 'MICHEAL'); SAVEPOINT s; INSERT INTO TEACHERS VALUES (5, 'PYTHON', 'STEVE'); INSERT INTO TEACHERS VALUES (6, 'PYTEST', 'ARNOLD'); ROLLBACK TO s; INSERT INTO TEACHERS VALUES (7, 'PROTRACTOR', 'FANNY'); COMMIT;
अगला, नीचे क्वेरी निष्पादित की गई है:
SELECT * FROM TEACHERS;
उपरोक्त कोड का आउटपुट होना चाहिए:
उपरोक्त कोड में, SAVEPOINT के साथ रोलबैक के बाद रों लागू किया जाता है, केवल दो और पंक्तियाँ सम्मिलित की जाती हैं, अर्थात् क्रमशः CODE 4 और 7 के साथ शिक्षक। कृपया ध्यान दें कि तालिका निर्माण के दौरान शिक्षकों को कोड 1, 2 और 3 के साथ जोड़ा गया है।
पीएल / एसक्यूएल में लॉक टेबल
पीएल / एसक्यूएल में लॉक स्टेटमेंट पूर्ण डेटाबेस को लॉकिंग मोड में लॉक करने में सक्षम बनाता है। यह निर्धारित करता है कि क्या हम तालिका तक पहुंच साझा करना या अस्वीकार करना चाहते हैं।
आइए हम एक लॉक टेबल का एक उदाहरण लेते हैं:
LOCK TABLE teachers IN ROW SHARE MODE NOWAIT;
उपरोक्त क्वेरी पंक्ति शेयर मोड में TEACHERS तालिका को लॉक करती है। एक पंक्ति शेयर मोड एक तालिका के समवर्ती उपयोग के लिए अनुमति देता है। यह उपयोगकर्ताओं को व्यक्तिगत उपयोग के लिए पूर्ण तालिका को लॉक करने की अनुमति नहीं देता है। एक कमिट या रोलबैक के निष्पादन के बाद, टेबल लॉक जारी किए जाते हैं। NowAIT कीवर्ड का उपयोग यह उल्लेख करने के लिए किया जाता है कि डेटाबेस को लॉक से मुक्त होने के लिए प्रतीक्षा करने की अनुमति नहीं है।
लॉक मोड एक टेबल पर लागू किया जा सकता है, यह निष्कर्ष निकालने के लिए महत्वपूर्ण है।
आइए PL / SQL में उपलब्ध कुछ LOCK मोड पर चर्चा करें:
Sl। नहीं न | लॉक मोड | प्रयोजन |
---|---|---|
1 | साझा करें | यह कई उपयोगकर्ताओं को एक साथ तालिका का उपयोग करने की अनुमति देता है। हालाँकि उपयोगकर्ताओं को अनन्य उपयोग के लिए पूर्ण तालिका को लॉक करने की अनुमति नहीं है। |
दो | कैसे EXCLUSIVE | यह कई उपयोगकर्ताओं को एक साथ तालिका का उपयोग करने की अनुमति देता है। हालाँकि उपयोगकर्ताओं को साझाकरण मोड में अनन्य उपयोग के लिए पूर्ण तालिका को लॉक करने की अनुमति नहीं है। |
३ | साझा करें | यह कई उपयोगकर्ताओं को एक साथ तालिका का उपयोग करने की अनुमति देता है। हालाँकि उपयोगकर्ताओं को अनन्य उपयोग के लिए पूर्ण तालिका को लॉक करने की अनुमति नहीं है। |
४ | शेयर | यह हमें एक साथ टेबल पर कई प्रश्नों को निष्पादित करने की अनुमति देता है। हालांकि उपयोगकर्ताओं को बंद टेबल को संशोधित करने की अनुमति नहीं है। |
५ | साझा करें EXCLUSIVE | यह उपयोगकर्ताओं को केवल तालिका तक पहुंचने की अनुमति देता है। उन्हें तालिका को संशोधित करने या साझाकरण मोड में तालिका को लॉक करने की अनुमति नहीं है। |
६ | EXCLUSIVE | यह केवल लॉक किए गए टेबल पर प्रश्नों को निष्पादित करने की अनुमति देता है। |
पीएल / एसक्यूएल में स्वचालित लेनदेन नियंत्रण
जब भी कोई INSERT या DELETE स्टेटमेंट चलाया जाता है तो हम एक कमिट स्टेटमेंट को डिफ़ॉल्ट रूप से निष्पादित कर सकते हैं। यह AUTOCOMMIT परिवेश को ON कर रहा है।
वाक्य - विन्यास:
SET AUTOCOMMIT ON;
फिर, इसे बंद करके AUTOCOMMIT पर्यावरण चर बनाकर बंद किया जा सकता है।
वाक्य - विन्यास:
SET AUTOCOMMIT OFF;
अक्सर पूछे जाने वाले प्रश्न और उत्तर
Q # 1) PL SQL में ट्रांजेक्शन क्या है?
उत्तर: लेन-देन SQL डेटा संगणना कथनों का एक समूह है जो एक परमाणु इकाई के रूप में काम करता है। सभी लेन-देन प्रकृति में परमाणु हैं, जो या तो प्रतिबद्ध हैं या समर्थित हैं।
Q # 2) PL SQL में COMMIT क्या है?
उत्तर: वर्तमान लेनदेन द्वारा डेटाबेस में स्थायी परिवर्तन करने के लिए एक COMMIT स्टेटमेंट का उपयोग किया जाता है। यह उपयोगकर्ताओं को दिखाई देने वाले डेटाबेस में संशोधन करता है।
क्यू # 3) आप एक लेनदेन कैसे समाप्त करते हैं?
उत्तर: लेन-देन एक COMMIT या रोलबैक विवरण के साथ स्पष्ट रूप से समाप्त होता है। डीएमएल स्टेटमेंट चलने के बाद इसे बिना शर्त समाप्त भी किया जा सकता है।
क्यू # 4) हम एक ट्रिगर में कर सकते हैं?
क्रोम के लिए सबसे अच्छा विज्ञापन अवरोधक विस्तार
उत्तर: हां, हम केवल तभी ट्रिगर कर सकते हैं यदि वह ट्रिगर ट्रांजेक्शन उसके पैरेंट ट्रांजैक्शन से स्टैंडअलोन हो।
Q # 5) क्या लेन-देन का चयन करना है?
उत्तर: हां, SELECT एक लेनदेन है जिसमें लेनदेन की सभी विशेषताएं हैं।
Q # 6) मैं ओरेकल में एक लेन-देन कैसे रोलबैक कर सकता हूं?
उत्तर: हमें Oracle में लेन-देन को रोलबैक करने के लिए ROLLBACK स्टेटमेंट चलाने की आवश्यकता है। यह लेनदेन द्वारा डेटाबेस में किए गए सभी परिवर्तनों को पूर्ववत कर देगा और इसकी मूल स्थिति में बहाल हो जाएगा।
निष्कर्ष
इस ट्यूटोरियल में, हमने पीएल एसक्यूएल लेनदेन की कुछ बुनियादी अवधारणाओं पर विस्तार से चर्चा की है जो पीएल एसक्यूएल लेनदेन प्रबंधन के लिए आवश्यक हैं। हमने नीचे सूचीबद्ध निम्नलिखित विषयों को कवर किया है:
- लेन-देन।
- एक लेनदेन में COMMIT का उपयोग।
- लेन-देन में एक रोलबैक क्या है?
- लेन-देन में SAVEPOINT के साथ रोलबैक का उपयोग।
- ताला टेबल।
अनुशंसित पाठ
- पीएल SQL ट्यूटोरियल उदाहरण के साथ शुरुआती के लिए | पीएल / एसक्यूएल क्या है
- Oracle डाटाबेस एप्लीकेशन डेवलपमेंट: Oracle SQL & PL / SQL
- PL SQL पैकेज: Oracle PL / SQL पैकेज ट्यूटोरियल उदाहरण के साथ
- SQL बनाम MySQL बनाम SQL सर्वर के बीच अंतर (उदाहरण के साथ)
- PL SQL डेटाटाइम प्रारूप: PL / SQL में दिनांक और समय कार्य
- पूरा गाइड पीएल SQL अपवाद हैंडलिंग उदाहरण के साथ
- SQL बनाम NoSQL सटीक अंतर और पता है कि कब NoSQL और SQL का उपयोग करना है
- Oracle डाटाबेस ट्यूटोरियल - Oracle डाटाबेस क्या है?