यदि आप लेन-देन अलगाव स्तर 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
. वाले भी