किसी लेन-देन के अंदर एक चयनित क्वेरी, अपने आप में 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 के रूप में उपलब्ध हैं।