Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL रोलबैक क्वेरी

कभी-कभी आपको MySQL डेटाबेस में किए गए परिवर्तनों को पूर्ववत करने की आवश्यकता हो सकती है। आप इसे MySQL रोलबैक क्वेरी का उपयोग करके आसानी से कर सकते हैं। MySQL रोलबैक कमांड का उपयोग करके MySQL डेटाबेस को रोलबैक करने का तरीका यहां दिया गया है।

MySQL रोलबैक कैसे काम करता है

MySQL रोलबैक स्टेटमेंट आपको हाल ही में निष्पादित किए गए एक और स्टेटमेंट को रोलबैक या पूर्ववत करने की अनुमति देता है। उदाहरण के लिए, यदि आपने गलती से पंक्तियों को हटा दिया है या अपडेट कर दिया है, तो आप उन बयानों को MySQL रोलबैक का उपयोग कर सकते हैं और मूल डेटाबेस को पुनर्स्थापित कर सकते हैं। हालाँकि, MySQL रोलबैक केवल तभी काम करता है जब डेटाबेस परिवर्तन डेटाबेस के लिए प्रतिबद्ध न हों।

बोनस पढ़ें :MySQL रोलअप का उपयोग कैसे करें

क्या हम MySQL में कमिट करने के बाद रोलबैक कर सकते हैं

नहीं। दुर्भाग्य से आप उन परिवर्तनों को पूर्ववत नहीं कर सकते जो डेटाबेस के लिए प्रतिबद्ध हैं।

MySQL डेटाबेस को रोलबैक कैसे करें

कृपया ध्यान दें, डिफ़ॉल्ट रूप से, MySQL प्रत्येक SQL क्वेरी को स्वतः कमिट करने के लिए कॉन्फ़िगर किया गया है। इसलिए, यदि आप MySQL रोलबैक का उपयोग करने में सक्षम होना चाहते हैं, तो निम्न कथन का उपयोग करके MySQL में ऑटो कमिट को बंद करना महत्वपूर्ण है।

MySQL डेटाबेस में लॉग इन करें और ऑटोकॉमिट को निष्क्रिय करने के लिए निम्न कमांड चलाएँ

SET autocommit = 0

या

SET autocommit = OFF

ऑटोकॉमिट मोड को स्पष्ट रूप से सक्षम करने के लिए आप निम्नलिखित कथन का उपयोग करते हैं:

SET autocommit = 1

या

SET autocommit = ON

बोनस पढ़ें :MySQL संस्करण की जांच कैसे करें

मान लें कि आपके पास निम्न तालिका है बिक्री (उत्पाद, आदेश_तिथि, बिक्री) . हम देखेंगे कि डिलीट कमांड के बाद MySQL रोलबैक कैसे जारी किया जाए।

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

अब हम ऊपर बताए अनुसार ऑटोकॉमिट को बंद कर दें,

mysql> set autocommit=0;

इसके बाद, बिक्री तालिका में सभी पंक्तियों को हटा दें।

mysql> delete from sales;
Query OK, 5 rows affected (0.00 sec)

mysql> select count(*) from sales;
+----------+
| count(*) |
+----------+
|        0 |
+----------+

जैसा कि आप देख सकते हैं कि बिक्री तालिका की सभी 5 पंक्तियाँ हटा दी गई हैं।

अब, डिलीट कमांड के बाद MySQL रोलबैक जारी करते हैं

mysql> rollback;
Query OK, 0 rows affected (0.07 sec)

mysql> select count(*) from sales;
+----------+
| count(*) |
+----------+
|        5 |
+----------+

जैसा कि आप देख सकते हैं, 5 हटाई गई पंक्तियों को पुनर्स्थापित कर दिया गया है क्योंकि परिवर्तन प्रतिबद्ध नहीं थे। हालाँकि, यदि आपने हटाने के बाद और ROLLBACK कमांड से पहले COMMIT स्टेटमेंट जारी किया था, तो MySQL ने आपकी तालिका को पुनर्स्थापित नहीं किया होगा।

बोनस पढ़ें :MySQL में फॉरेन की चेक को डिसेबल कैसे करें

MySQL रोलबैक अपडेट कमांड

इसी तरह, आप अपडेट कमांड को रोलबैक कर सकते हैं। आइए हम बिक्री को अपडेट करें ऊपर बिक्री . में कॉलम टेबल।

mysql> set autocommit=0;

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+
5 rows in set (0.00 sec)

mysql> update sales set sale=sale*2;
Query OK, 5 rows affected (0.05 sec)


mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   40 |
| B       | 2020-01-02 |   50 |
| B       | 2020-01-03 |   30 |
| A       | 2020-01-04 |   60 |
| A       | 2020-01-05 |   40 |
+---------+------------+------+

जैसा कि आप देख सकते हैं कि हमने बिक्री कॉलम का मूल्य दोगुना कर दिया है। अब रोलबैक अपडेट कमांड करते हैं।

mysql> rollback;

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

जैसा कि आप देख सकते हैं कि बिक्री कॉलम पुराने मान बहाल कर दिए गए हैं।

आप संग्रहीत प्रक्रियाओं में MySQL रोलबैक और त्रुटि पर MySQL रोलबैक के लिए MySQL लेनदेन भी शामिल कर सकते हैं। कुंजी MySQL रोलबैक निष्पादित करने के लिए ऑटोकॉमिट को अक्षम करना है।

Ubiq मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL त्रुटि 1264:स्तंभ के लिए सीमा मान से बाहर

  2. MySQL में नई भूमिकाओं का उपयोग करना 8

  3. समय ओवरलैप के लिए एक टेबल की जाँच?

  4. MySQL:एक सेलेक्ट स्टेटमेंट केस संवेदनशील है?

  5. MySQL में विदेशी कुंजी की मूल बातें?