InnoDB तालिकाओं के लिए डिफ़ॉल्ट अलगाव स्तर पढ़ने योग्य है। जब यह अलगाव स्तर सक्रिय होता है तो हमें निम्नलिखित व्यवहार मिलता है (उद्धरण:https://dev.mysql.com/doc/refman/5.5/en/set-transaction.html ):
दूसरे शब्दों में:क्या आप चयन की WHERE स्थिति में प्राथमिक कुंजी का उपयोग करने का प्रयास कर सकते हैं? तो उदाहरण के लिए इसके बजाय:
START TRANSACTION;
SELECT * FROM productMacAddress WHERE status='free' limit 8 FOR UPDATE;
कोशिश करें:
START TRANSACTION;
SELECT * FROM productMacAddress WHERE id=10 FOR UPDATE;
मामले में आईडी प्राथमिक कुंजी है। उस पर एक अद्वितीय अनुक्रमणिका वाला कोई अन्य कॉलम भी काम करेगा। आपके WHERE क्लॉज में गैर-अद्वितीय कॉलम का उपयोग करते समय InnoDB पंक्तियों की एक श्रृंखला को लॉक कर देगा।