वर्तमान MySQL ट्रांजैक्शन को स्पष्ट रूप से समाप्त करने के दो तरीके हैं:
1. COMMIT कमांड द्वारा - परिवर्तन सेव करें
mysql> START TRANSACTION;
mysql> INSERT INTO Marks Values(1, 'Aarav','Maths',50);
mysql> INSERT INTO Marks Values(2, 'Harshit','Maths',55);
mysql> COMMIT;
Query OK, 0 rows affected (0.06 sec)
-- परिणाम: डेटा स्थायी रूप से सेव
mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id | Name | Subject | Marks |
+------+---------+---------+-------+
| 1 | Aarav | Maths | 50 |
| 2 | Harshit | Maths | 55 |
+------+---------+---------+-------+
2. ROLLBACK कमांड द्वारा - परिवर्तन रद्द करें
-- मान लें टेबल में पहले से 2 रिकॉर्ड हैं
mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id | Name | Subject | Marks |
+------+---------+---------+-------+
| 1 | Aarav | Maths | 50 |
| 2 | Harshit | Maths | 55 |
+------+---------+---------+-------+
mysql> START TRANSACTION;
mysql> INSERT INTO Marks Values(3, 'Rahul','History',40);
mysql> INSERT INTO Marks Values(4, 'Yashraj','English',48);
mysql> ROLLBACK;
Query OK, 0 rows affected (0.04 sec)
-- परिणाम: नए रिकॉर्ड रद्द, टेबल अपरिवर्तित
mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id | Name | Subject | Marks |
+------+---------+---------+-------+
| 1 | Aarav | Maths | 50 |
| 2 | Harshit | Maths | 55 |
+------+---------+---------+-------+
तुलना:
| कमांड | प्रभाव | उपयोग केस |
|---|---|---|
| COMMIT | सभी परिवर्तन स्थायी | सभी ऑपरेशन सफल |
| ROLLBACK | सभी परिवर्तन रद्द | कोई त्रुटि, उपयोगकर्ता रद्द, व्यावसायिक नियम विफल |
सर्वोत्तम अभ्यास: एप्लिकेशन कोड में try-catch-finally पैटर्न उपयोग करें:
try {
START TRANSACTION;
// SQL ऑपरेशंस
COMMIT;
} catch (Exception e) {
ROLLBACK;
throw e;
}