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

यदि एक PHP पीडीओ लेनदेन विफल हो जाता है, तो क्या मुझे स्पष्ट रूप से रोलबैक () करना चाहिए?

अगर आप commit नहीं करते हैं नहीं rollback एक खुला लेनदेन, और यह commit नहीं है आपकी स्क्रिप्ट में बाद में कहीं भी, यह commit नहीं होगा (जैसा कि डेटाबेस इंजन द्वारा देखा गया है) , और आपकी स्क्रिप्ट के अंत में स्वचालित रूप से रोल-बैक हो जाएगा।


फिर भी, मैं (ठीक है, लगभग) हमेशा commit या rollback स्पष्ट रूप से मेरे द्वारा खोले गए लेन-देन, इसलिए:

  • त्रुटि का जोखिम नहीं है (जैसे बाद में स्क्रिप्ट में "गलती से" करना)
  • कोड पढ़ने/समझने में अधिक आसान है :जब कोई $db->rollback() देखता है , वह जानता है कि मैं लेन-देन को निश्चित रूप से वापस लेना चाहता हूं, और उसे यह सोचने की ज़रूरत नहीं है कि "क्या वह वास्तव में रोलबैक करना चाहता था, या क्या वह कुछ भूल गया था? और बाद में स्क्रिप्ट में क्या होगा? "


DB इंजन PDOException को "नहीं" देखता है:इसे PHP द्वारा विभिन्न परिस्थितियों में फेंका जाता है - लेकिन डेटाबेस अपने आप कुछ भी रोलबैक नहीं करता है:

  • या तो लेन-देन किया गया है
  • या इसे वापस ले लिया गया है
  • या यह स्पष्ट रूप से कमिटेड या रोल-बैक नहीं है - जिसका अर्थ है कि यह कमिटेड नहीं है - जिसका अर्थ है कि जो संशोधित किया गया है वह "वास्तव में" संशोधित नहीं है



  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 में गैर-अंग्रेज़ी अक्षरों को ऑर्डर करना

  2. एंटिटी फ्रेमवर्क:वर्चर को डेटटाइम प्रॉपर्टी में मैप करें

  3. MySQL में प्रत्येक समूह के उच्चतम n मान ढूँढना

  4. मैं सुपरस्ट्रिंग प्रश्नों के लिए डेटाबेस को कैसे अनुकूलित करूं?

  5. प्राथमिक कुंजी SQL ट्यूटोरियल - डेटाबेस में प्राथमिक कुंजी को कैसे परिभाषित करें