INSERT INTO … ON DUPLICATE KEY UPDATE इस तरह काम करता है:
- यह हमेशा की तरह एक पंक्ति डालने का प्रयास करता है
- यदि किसी कॉलम में कोई बाधा उल्लंघन होता है, तो वह
UPDATEको निष्पादित करता है इसके बजाय मौजूदा पंक्ति पर कथन जिसके साथINSERTबयान टकरा गया
इसका सीधा सा मतलब है अगर UPDATE केवल स्टेटमेंट ही सफल होगा, इसका ON DUPLICATE KEY UPDATE समकक्ष भी काम करेगा। इसका मतलब है कि आप स्पष्ट रूप से UPDATE . में किसी भी बाधा का उल्लंघन नहीं कर सकते हैं कथन या तो, या पूरी बात विफल हो जाएगी (उदाहरण के लिए UNIQUE पर मान सेट करने का प्रयास करना कॉलम जो पहले से ही दूसरी पंक्ति में मौजूद है)।
यदि आप उसी मान को उसी कॉलम पर फिर से सेट करते हैं, तो यह अनिवार्य रूप से एक नो-ऑप है। कॉलम में मान नहीं बदलता है और इसलिए किसी भी त्रुटि का कारण नहीं बन सकता है (मान लें कि आपके पास वास्तव में कोई भी फंकी नहीं है BEFORE UPDATE ट्रिगर जो दुर्व्यवहार कर सकते हैं)। यहां स्तंभों की संख्या अप्रासंगिक है, आप एक कथन में जितने चाहें उतने या कम को बदल सकते हैं।