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

हम एक MySQL लेनदेन को कैसे कार्यान्वित कर सकते हैं?


जैसा कि हम जानते हैं कि एक लेन-देन में बयानों को एक इकाई के रूप में निष्पादित किया जाता है। यदि लेन-देन के भीतर कोई कार्रवाई विफल हो जाती है, तो पूरा लेनदेन विफल हो जाएगा और उसे वापस ले लिया जाना चाहिए; अन्यथा, कथनों द्वारा किए गए कोई भी परिवर्तन डेटाबेस में सहेजे जाते हैं। लेन-देन को लागू करने के लिए MySQL निम्नलिखित कथन प्रदान करता है -

लेन-देन प्रारंभ करें

जैसा कि नाम से पता चलता है, लेन-देन इस कथन से शुरू होता है। मूल रूप से, यह MySQL को सूचित करता है कि लेन-देन समाप्त होने तक अनुसरण करने वाले कथनों को एकल कार्य इकाई के रूप में माना जाना चाहिए।

COMMIT

COMMIT Statement डेटाबेस में परिवर्तन करता है। दूसरे शब्दों में, जब एक सफल लेनदेन पूरा हो जाता है, तो COMMIT आदेश जारी किया जाना चाहिए ताकि सभी शामिल तालिकाओं में परिवर्तन प्रभावी हो जाएं।

रोलबैक

ROLLBACK कमांड स्टेटमेंट द्वारा किए गए किसी भी बदलाव को पूर्ववत करता है और डेटाबेस को पिछली स्थिति में लौटाता है, यानी उस स्थिति में जब लेनदेन शुरू हुआ था।

उदाहरण

एक MySQL लेनदेन के कार्यान्वयन को प्रदर्शित करने के लिए निम्नलिखित एक उदाहरण है -

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO Marks Values(1, 'Aarav','Maths',50);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Marks Values(2, 'Harshit','Maths',55);
Query OK, 1 row affected (0.00 sec)

mysql> COMMIT;
Query OK, 0 rows affected (0.06 sec)

इस उदाहरण में, लेन-देन START TRANSACTION कथन द्वारा आरंभ किया जाता है। फिर दो INSERT स्टेटमेंट्स को COMMIT स्टेटमेंट के बाद निष्पादित किया जाता है। COMMIT स्टेटमेंट डेटाबेस में होने वाले बदलावों को सेव करेगा जिसे निम्नलिखित परिणाम सेट से देखा जा सकता है जो दर्शाता है कि मान तालिका में डाले गए हैं -

mysql> SELECT * FROM Marks;
 +------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
| 1    | Aarav   | Maths   | 50    |
| 2    | Harshit | Maths   | 55    |
+------+---------+---------+-------+
2 rows in set (0.00 sec)

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO Marks Values(1, 'Aarav','History',40);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Marks Values(1, 'Harshit','History',48);
Query OK, 1 row affected (0.00 sec)

mysql> ROLLBACK;
Query OK, 0 rows affected (0.04 sec)

इस उदाहरण में, लेन-देन START TRANSACTION कथन द्वारा आरंभ किया जाता है। फिर दो INSERT स्टेटमेंट्स को एक रोलबैक स्टेटमेंट के बाद निष्पादित किया जाता है। ROLLBACK स्टेटमेंट डेटाबेस में किए गए परिवर्तनों को पूर्ववत कर देगा, जिसे निम्नलिखित परिणाम सेट से देखा जा सकता है जो दर्शाता है कि तालिका में कोई नया मान नहीं डाला गया है -

mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
| 1    | Aarav   | Maths   | 50    |
| 1    | Harshit | Maths   | 55    |
+------+---------+---------+-------+
2 rows in set (0.00 sec)

  1. मैं MySQL में गैर-ASCII वर्ण कैसे ढूंढ सकता हूं?

    गैर ASCII वर्ण ऐसे वर्ण हैं जैसे पाउंड प्रतीक (£), ट्रेडमार्क प्रतीक, plusminussymbol आदि। तालिका से गैर-ASCII वर्णों को खोजने के लिए, निम्न चरणों की आवश्यकता है - सबसे पहले create कमांड की मदद से एक टेबल बनाई जाती है जो इस प्रकार है - );क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.61 सेकंड) उसके बाद इ

  1. मैं MySQL में NULL के लिए 0 कैसे लौटा सकता हूं?

    हम IFNULL () विधि की मदद से MySQL में NULL के लिए 0 वापस कर सकते हैं। IFNULL() का सिंटैक्स इस प्रकार है। IFNULL(YourEXPRESSION,0); आइए एक उदाहरण देखते हैं। सबसे पहले, हम एक टेबल बनाएंगे। );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.65 सेकंड) तालिका बनाने के बाद, आइए INSERT कमांड का उपयोग करके तालिका में

  1. हम MySQL में नेस्टेड लेनदेन का उपयोग कैसे कर सकते हैं?

    हम SAVEPOINT की मदद से MySQL में नेस्टेड लेनदेन के साथ काम कर सकते हैं। सबसे पहले, एक टेबल बनाएं। उसके बाद, लेन-देन शुरू करें। अब, ऊपर बनाई गई तालिका में रिकॉर्ड डालें। पहचानकर्ता के नाम के साथ नामित लेन-देन सेवपॉइंट सेट करने के लिए SAVEPOINT कथन का उपयोग करें। क्वेरी के रूप में दिखाए गए सभी चरण