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