किसी लेन-देन के अंदर एक चयनित क्वेरी, अपने आप में UPDATEs और DELETEs से ठीक से परिरक्षित नहीं है।
आपको निम्नलिखित का उपयोग करने की आवश्यकता है:
यदि आप जारी करते हैं Delete From orders Where id=1, तो यह तब होगा जब ordersलेन-देन के अंत में तालिका में पंक्तियों ने अपने ताले जारी किए होंगे। आप READ UNCOMMITTEDतार्किक रूप से डिलीट करने के लिए ट्रांजेक्शन आइसोलेशन लेवल का उपयोग करके (एक देव / स्टेजिंग सर्वर पर, प्रयोग कर सकते हैं) , लेकिन केवल कमिट पर ही यह दृश्यमान और स्थायी रूप से रिकॉर्ड हो जाएगा।
दूसरे लेन-देन में, मूल रूप से सभी दांव बंद हैं। अगर तुम दौड़ते हो
select * From orders Where id=1;
UPDATE orders SET username="John" Where id=1;
दौड़ना Delete From orders Where id=1तुरंत प्रतिबद्ध होगा। MySQL इन कथनों को निष्पादित करने के आदेश के आधार पर, क्या आप हटाए गए पंक्तियों को देखेंगे (या नहीं देखेंगे)।
चेतावनी
MySQL 5.6 अब निम्नलिखित है :
START TRANSACTION READ WRITE;
START TRANSACTION READ ONLY;
READ WRITE और READ ONLY संशोधक लेन-देन एक्सेस मोड सेट करते हैं। वे लेनदेन में उपयोग की जाने वाली तालिकाओं में परिवर्तन की अनुमति देते हैं या रोकते हैं। READ ONLY प्रतिबंध लेन-देन को संशोधित करने या लेन-देन दोनों को रोकने से रोकता है, जो अन्य लेनदेन के लिए दृश्यमान हैं; लेन-देन अभी भी अस्थायी तालिकाओं को संशोधित या लॉक कर सकता है। ये संशोधक MySQL 5.6.5 के रूप में उपलब्ध हैं।