यदि आप लेन-देन अलगाव स्तर SERIALIZABLE . पर सेट करते हैं , InnoDB परोक्ष रूप से संलग्न होगा LOCK IN SHARE MODE सभी को SELECT बयान।
यह मोड SELECT FOR UPDATE . द्वारा लगाए गए लॉक के साथ विरोध करता है और SELECT s लॉक हो जाएगा।
हालांकि, ध्यान दें कि InnoDB WHERE . को संतुष्ट करने की तुलना में अधिक पंक्तियों को लॉक कर सकता है स्थिति। ऐसा इसलिए है क्योंकि यह सभी पंक्तियों को लॉक कर देता है स्कैन किया हुआ , न केवल वे मिलान ।
मान लीजिए, आपके पास col1 . पर एक अनुक्रमणिका है और यह प्रश्न:
SELECT *
FROM mytable
WHERE col1 = 1
AND col2 = 2
FOR UPDATE
इस अनुक्रमणिका का उपयोग करता है।
यह सभीको लॉक कर देगा col1 = 1 . के साथ रिकॉर्ड , यहां तक कि col2 <> 2 . वाले भी