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

MySQL लेनदेन पहेली

MySQL कॉलर को त्रुटि कोड पास करता है और इस त्रुटि कोड के आधार पर कॉलर यह तय करने के लिए स्वतंत्र है कि क्या वह इस समय तक किए गए कार्य को करना चाहता है (इस विशेष के साथ त्रुटि को अनदेखा करना INSERT स्टेटमेंट) या लेन-देन को रोलबैक करने के लिए।

यह PostgreSQL के विपरीत है जो हमेशा त्रुटि पर लेन-देन को रोकता है और यह व्यवहार कई समस्याओं का स्रोत है।

अपडेट करें:

बिना शर्त ROLLBACK . का उपयोग करना एक बुरा अभ्यास है संग्रहित प्रक्रियाओं के अंदर।

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

यदि आप त्रुटियों पर डेटाबेस स्थिति को पुनर्स्थापित करने के लिए लेनदेन का उपयोग करना चाहते हैं, तो SAVEPOINT . का उपयोग करें निर्माण और DECLARE HANDLER सेवपॉइंट पर वापस जाने के लिए:

CREATE PROCEDURE prc_work()
BEGIN
        DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK TO sp_prc_work;
        SAVEPOINT sp_prc_work;
        INSERT  …;
        INSERT  …;
        …
END;

किसी भी इंसर्ट में विफलता प्रक्रिया द्वारा किए गए सभी परिवर्तनों को वापस ले लेगी और इससे बाहर निकल जाएगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Reddit और Hacker News रैंकिंग एल्गोरिदम का उपयोग कैसे किया जाता है?

  2. ईवेंट के साथ सभी ईवेंट चुनें-> शेड्यूल-> केकपीएचपी में प्रारंभ और समाप्ति तिथियों के बीच की तिथि

  3. MySQL में पंक्ति से स्तंभ परिवर्तन

  4. MySQL:विभिन्न तालिकाओं पर जोड़ना और गुणा करना

  5. MySQL क्या है:एक सिंहावलोकन