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