हाँ और नहीं :-)
दोनों ही मामलों में, पहुंच को क्रमबद्ध किया जाता है (यह मानते हुए कि आप InnoDB जैसे ट्रांजेक्शनल इंजन का उपयोग कर रहे हैं) क्योंकि वे एक ही पंक्ति से टकराते हैं, इसलिए वे एक दूसरे के साथ हस्तक्षेप नहीं करेंगे। दूसरे शब्दों में, कथन हैं परमाणु।
हालांकि, जब आप कनेक्शन खोलते हैं तो प्रभावित पंक्तियों की संख्या वास्तव में आपके कॉन्फ़िगरेशन सेट पर निर्भर करती है। mysql_induced_rows() के लिए पेज यह कहना है (मेरा बोल्ड):
और mysql_real_connect पेज से :
तो, क्या होता है साथ . के संदर्भ में CLIENT_FOUND_ROWS
कॉन्फ़िगर किया जा रहा है, इसके लिए प्रभावित पंक्तियाँ:
UPDATE T1 SET C1 = 'dirty' WHERE id = 1
कुछ नहीं यह करने के लिए कि क्या डेटा बदला गया है, केवल वही पंक्तियाँ मिलान हुई। यह दोनों प्रश्नों के लिए 1 होगा।
दूसरी ओर, यदि CLIENT_FOUND_ROWS
था नहीं सेट, दूसरी क्वेरी वास्तव में पंक्ति को नहीं बदलेगी (क्योंकि यह पहले से ही 'गंदे' से आबाद है) और इसकी पंक्ति संख्या शून्य होगी।
अगर आप समान . चाहते थे व्यवहार उस सेटिंग की परवाह किए बिना (केवल परिवर्तन दिखा रहा है), आप कुछ इस तरह का उपयोग कर सकते हैं:
UPDATE T1 SET C1 = 'dirty' WHERE id = 1 AND C1 <> 'dirty'