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

MySQL स्टोर्ड प्रोसीजर में COMMIT का उपयोग करने पर क्या होता है यदि START ट्रांजैक्शन के तहत एक ट्रांजैक्शन विफल हो जाता है?


मान लीजिए क्वेरीज में से एक विफल हो जाती है या त्रुटियां उत्पन्न करती है और अन्य क्वेरी (क्वेरीज) ठीक से निष्पादित होती हैं तो MySQL फिर भी ठीक से निष्पादित क्वेरी (क्वेरीज) के परिवर्तनों को कमिट कर देता है। इसे निम्न उदाहरण से समझा जा सकता है जिसमें हम 'employee.tbl' टेबल का उपयोग कर रहे हैं जिसमें निम्न डेटा है:

उदाहरण

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

mysql> Delimiter //
mysql> Create Procedure st_transaction_commit_save()
    ->
    BEGIN
    START TRANSACTION;
    INSERT INTO employee.tbl (name) values ('Rahul');
    UPDATE employee.tbl set name = 'Gurdas' WHERE id = 10;
    COMMIT;
    END //
Query OK, 0 rows affected (0.00 sec)

अब, जब हम इस प्रोसीजर को इनवोक करते हैं, तो हम जानते हैं कि UPDATE क्वेरी त्रुटि उत्पन्न करेगी क्योंकि हमारी टेबल पर id =10 नहीं है। लेकिन चूंकि पहली क्वेरी सफलतापूर्वक निष्पादित होगी इसलिए COMMIT टेबल में परिवर्तनों को सहेज लेगा।

mysql> Delimiter ;
mysql> Call st_transaction_commit_save()//
Query OK, 0 rows affected (0.07 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)

  1. - MySQL में स्टोर्ड प्रोसीजर और सेलेक्ट में IF का उपयोग कैसे करें?

    आप स्टोर्ड प्रोसीजर में IF और सेलेक्ट स्टेटमेंट में IF() का उपयोग कर सकते हैं। सेलेक्ट स्टेटमेंट में IF() IF() in select statement mysql> select if(0=0,Hello MySQL,condition is wrong); इससे निम्न आउटपुट प्राप्त होगा: +------------------------------------------------------+ | if(test=test,Hello My

  1. - MySQL स्टोर्ड प्रोसीजर में @ सिंबल का उपयोग क्या है?

    MySQL में @ सिंबल: यूजर-डिफाइंड सेशन वेरिएबल MySQL में @ सिंबल का उपयोग यूजर-डिफाइंड सेशन वेरिएबल को दर्शाने के लिए किया जाता है। ये वेरिएबल केवल वर्तमान सेशन के लिए मौजूद होते हैं और स्टोर्ड प्रोसीजर के बीच डेटा पास करने के लिए उपयोगी होते हैं। उदाहरण: स्टोर्ड प्रोसीजर में @ वेरिएबल का उपयोग पहले

  1. - MySQL स्टोर्ड प्रोसीजर में डिलीमीटर का सही उपयोग और मान डालना

    समस्या स्टोर्ड प्रोसीजर बनाते समय डिफ़ॉल्ट डिलीमीटर (;) क्वेरी को जल्दी समाप्त कर देता है। समाधान DELIMITER बदलें, प्रोसीजर बनाएं, फिर डिलीमीटर बहाल करें। उदाहरण टेबल बनाएं: ); स्टोर्ड प्रोसीजर बनाएं DELIMITER ; प्रोसीजर कॉल करें CALL insert_name(Chris, Brown); परिणाम +------------------+---