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

MySQL स्टोर्ड प्रोसीजर के अंदर ROLLBACK ट्रांजैक्शन कैसे करें?


हम जानते हैं कि ROLLBACK ट्रांजैक्शन शुरू होने के बाद डेटाबेस में किए गए किसी भी परिवर्तन को वापस कर देगा। MySQL स्टोर्ड प्रोसीजर में ROLLBACK करने के लिए हमें EXIT हैंडलर घोषित करना होगा। हम sqlexception या SQL चेतावनियों के लिए हैंडलर का उपयोग कर सकते हैं। इसे उस उदाहरण की मदद से समझा जा सकता है जिसमें निम्न विवरण वाली टेबल के लिए ROLLBACK वाला स्टोर्ड प्रोसीजर बनाया गया है:

mysql> SHOW CREATE table gg\G
*************************** 1. row ***************************
Table: gg
Create Table: CREATE TABLE `gg` (
    `Id` int(11) NOT NULL AUTO_INCREMENT,
    `Name` varchar(30) NOT NULL,
    PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

हम देख सकते हैं कि कॉलम 'name' में NULL मान नहीं हो सकते और टेबल में निम्न डेटा है:

mysql> Select * from employee.tbl;
+----+---------+
| Id | Name    |
+----+---------+
|  1 | Mohan   |
|  2 | Gaurav  |
|  3 | Sohan   |
|  4 | Saurabh |
|  5 | Yash    |
|  6 | Rahul   |
+----+---------+
6 rows in set (0.00 sec)

उदाहरण

mysql> Delimiter //
mysql> Create Procedure st_transaction_Rollback()
    ->
    BEGIN
    DECLARE exit handler for sqlexception
    BEGIN
    ROLLBACK;
    END;
    DECLARE exit handler for sqlwarning
    BEGIN
    ROLLBACK;
    END;
    START TRANSACTION;
    INSERT INTO employee.tbl(name) values();
    UPDATE employee.tbl set name = 'YashPal' where id = 5;
    COMMIT;
    END //
Query OK, 0 rows affected (0.02 sec)

mysql> Delimiter ;
mysql> CALL st_transaction_Rollback ()
Query OK, 0 rows affected (0.00 sec)

mysql> Select * from employee.tbl;
+----+---------+
| Id | Name    |
+----+---------+
|  1 | Mohan   |
|  2 | Gaurav  |
|  3 | Sohan   |
|  4 | Saurabh |
|  5 | Yash    |
|  6 | Rahul   |
+----+---------+
6 rows in set (0.00 sec)

हम उपरोक्त परिणाम सेट से देख सकते हैं कि UPDATE स्टेटमेंट द्वारा किए गए परिवर्तन ROLLBACK हो गए हैं क्योंकि INSERT की पहली क्वेरी ने त्रुटि फेंकी (NULL मान सम्मिलित करने का प्रयास)।


  1. - MySQL स्टोर्ड प्रोसीजर के अंदर COMMIT ट्रांजैक्शन कैसे करें?

    हम जानते हैं कि START ट्रांजैक्शन ट्रांजैक्शन शुरू करेगा और COMMIT का उपयोग ट्रांजैक्शन शुरू करने के बाद किए गए किसी भी परिवर्तन को बनाने के लिए किया जाता है। निम्न उदाहरण में, हमने COMMIT के साथ START ट्रांजैक्शन वाला एक स्टोर्ड प्रोसीजर बनाया है जो एक नया रिकॉर्ड सम्मिलित करेगा और employee.tbl टे

  1. - MySQL स्टोर्ड प्रोसीजर के अंदर START ट्रांजैक्शन कैसे करें?

    हम जानते हैं कि START ट्रांजैक्शन ट्रांजैक्शन शुरू करेगा और ऑटो-कमिट मोड को ऑफ सेट करेगा। निम्न उदाहरण में, हमने START ट्रांजैक्शन वाला एक स्टोर्ड प्रोसीजर बनाया है जो employee.tbl टेबल में एक नया रिकॉर्ड सम्मिलित करेगा जिसमें निम्न डेटा है: Select * from employee.tbl; +----+---------+ | Id | Name

  1. - एक MySQL स्टोर्ड प्रोसीजर दूसरे MySQL स्टोर्ड प्रोसीजर को अपने अंदर कैसे कॉल कर सकता है?

    यह बिल्कुल संभव है कि एक MySQL स्टोर्ड प्रोसीजर दूसरे MySQL स्टोर्ड प्रोसीजर को अपने अंदर कॉल कर सकता है। इसे दर्शाने के लिए, हम एक उदाहरण ले रहे हैं जिसमें एक स्टोर्ड प्रोसीजर दूसरे स्टोर्ड प्रोसीजर को कॉल करके last_insert_id का पता लगाएगा। उदाहरण BEGIN insert into employee.tbl(name) values (