Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में नेस्टेड ट्रांजैक्शन कैसे उपयोग करें?


MySQL में SAVEPOINT के साथ नेस्टेड ट्रांजैक्शन लागू करें

MySQL सीधे नेस्टेड ट्रांजैक्शन (एक ट्रांजैक्शन के अंदर दूसरा ट्रांजैक्शन शुरू करना) का समर्थन नहीं करता। हालांकि, आप SAVEPOINT का उपयोग करके समान व्यवहार प्राप्त कर सकते हैं, जो आपको एक ट्रांजैक्शन के भीतर रोलबैक पॉइंट सेट करने की अनुमति देता है।

चरण-दर-चरण उदाहरण

1. टेबल बनाएं

mysql> CREATE TABLE NestedTransactionDemo (
    -> Name VARCHAR(200)
    -> );

2. ट्रांजैक्शन शुरू करें

mysql> START TRANSACTION;

3. पहला रिकॉर्ड डालें

mysql> INSERT INTO NestedTransactionDemo VALUES('John');
mysql> SELECT * FROM NestedTransactionDemo;

आउटपुट: John

4. सेवपॉइंट बनाएं और दूसरा रिकॉर्ड डालें

mysql> SAVEPOINT transaction2;
mysql> INSERT INTO NestedTransactionDemo VALUES('David');
mysql> SELECT * FROM NestedTransactionDemo;

आउटपुट: John, David

5. सेवपॉइंट पर रोलबैक करें

mysql> ROLLBACK TO transaction2;
mysql> SELECT * FROM NestedTransactionDemo;

आउटपुट: केवल John (David हटा दिया गया)

6. फिर से रोलबैक (कोई प्रभाव नहीं)

mysql> ROLLBACK TO transaction2;

मुख्य अवधारणाएं

  • SAVEPOINT नाम: एक नामित रोलबैक पॉइंट बनाता है।
  • ROLLBACK TO सेवपॉइंट_नाम: उस सेवपॉइंट के बाद किए गए परिवर्तनों को पूर्ववत करता है, लेकिन ट्रांजैक्शन खुला रखता है।
  • RELEASE SAVEPOINT नाम: एक सेवपॉइंट हटाता है।
  • COMMIT: सभी परिवर्तनों को स्थायी करता है (सभी सेवपॉइंट हटा दिए जाते हैं)।
  • ROLLBACK (सेवपॉइंट के बिना): पूरे ट्रांजैक्शन को रोलबैक करता है।

सीमाएं

  • सेवपॉइंट केवल वर्तमान ट्रांजैक्शन के भीतर काम करते हैं।
  • DDL कथन (CREATE, ALTER, DROP) निहित कमिट का कारण बनते हैं।
  • ट्रू नेस्टेड ट्रांजैक्शन (स्वतंत्र कमिट/रोलबैक) MySQL में समर्थित नहीं हैं।
  1. - MySQL में ORDER BY NULL का उपयोग और MySQL 8.0 में इसका व्यवहार

    MySQL में ORDER BY NULL का उपयोग और विभिन्न संस्करणों में इसका व्यवहार। नोट: MySQL 5.7 से पहले, ORDER BY NULL ग्रुपिंग/अन्य ऑपरेशन से अंतर्निहित क्रमबद्धता को दबाने के लिए उपयोगी था। MySQL 8.0+ में, अंतर्निहित क्रमबद्धता व्यवहार बदल गया है और ORDER BY NULL निर्दिष्ट करना अब आवश्यक नहीं है। उदाहरण:

  1. - MySQL में @ चिह्न (उपयोगकर्ता-परिभाषित चर) का उपयोग करें

    MySQL में @ चिह्न **उपयोगकर्ता-परिभाषित चर (user-defined variables)** को दर्शाता है। ये चर सत्र-विशिष्ट (session-specific) होते हैं और एक कनेक्शन के भीतर मानों को अस्थायी रूप से संग्रहीत करके क्वेरी के बीच साझा करने की अनुमति देते हैं। सिंटैक्स SET @variable_name := value; या SELECT में असाइनमेंट:

  1. - C# में नेस्टेड if स्टेटमेंट्स का उपयोग कैसे करें

    एक if या else if स्टेटमेंट को दूसरे if या else if स्टेटमेंट(s) के अंदर उपयोग करें। नेस्टेड if स्टेटमेंट का सिंटैक्स निम्नलिखित है - if( boolean_expression 1) { /* बूलियन एक्सप्रेशन 1 सत्य होने पर निष्पादित होता है */ if(boolean_expression 2) { /* बूलियन एक्सप्रेशन 2 सत्य होने पर