मुझे लगता है कि आप इनो डीबी टेबल का उपयोग कर रहे हैं, न कि माईसाम वाले। जैसा कि InnoDB लेन-देन मॉडल में बताया गया है , सभी आपके प्रश्न (चयन सहित) लेनदेन के अंदर हो रहे हैं।
जब AutoCommit
चालू है, प्रत्येक क्वेरी के लिए एक लेनदेन शुरू किया जाता है और यदि यह सफल होता है, तो यह निहित रूप से प्रतिबद्ध है (यदि यह विफल रहता है, तो व्यवहार भिन्न हो सकता है, लेकिन लेनदेन समाप्त होने की गारंटी है)। आप MySQL के बिनलॉग में निहित कमिट देख सकते हैं। AutoCommit
setting सेट करके गलत करने के लिए, आपको अपने लेनदेन का प्रबंधन स्वयं करना होगा।
डिफ़ॉल्ट लेन-देन अलगाव स्तर है दोहराए जाने योग्य पढ़ेंए> , जिसका अर्थ है कि सभी SELECT
क्वेरीज़ एक ही स्नैपशॉट पढ़ेंगे (लेन-देन शुरू होने पर स्थापित)।
अन्य उत्तर में दिए गए समाधान के अलावा (ROLLBACK
पढ़ना शुरू करने से पहले) यहां कुछ समाधान दिए गए हैं:
आप एक अन्य लेन-देन अलगाव स्तर चुन सकते हैं, जैसे प्रतिबद्ध पढ़ें
, जो आपका SELECT
. बनाता है क्वेरीज़ हर बार एक ताज़ा स्नैपशॉट पढ़ती हैं।
आप AutoCommit
भी छोड़ सकते हैं सही पर (डिफ़ॉल्ट सेटिंग) और BEGIN WORK
. जारी करके अपना खुद का लेनदेन शुरू करें . यह अस्थायी रूप से AutoCommit
. को अक्षम कर देगा जब तक आप COMMIT
जारी नहीं करते तब तक व्यवहार या ROLLBACK
वह कथन जिसके बाद प्रत्येक क्वेरी का अपना लेन-देन फिर से हो जाता है (या आप BEGIN WORK
के साथ दूसरी शुरुआत करते हैं )।
मैं, व्यक्तिगत रूप से, बाद वाली विधि को चुनूंगा, क्योंकि यह अधिक सुरुचिपूर्ण लगती है।