पोस्टग्रेज (लगभग सभी अन्य डीबीएमएस की तरह) यह जांच नहीं करेगा कि लक्ष्य मान अलग हैं या नहीं। तो उत्तर है:हाँ, यह पंक्ति को अद्यतन करेगा भले ही मान भिन्न हों।
हालांकि, आप इस मामले में "खाली" अपडेट को कहां शामिल करके आसानी से रोक सकते हैं:
INSERT INTO topic (......)
VALUES (......)
ON CONFLICT (...)
DO UPDATE
set ... -- update all column
WHERE topic IS DISTINCT FROM excluded;
जहां क्लॉज उस पंक्ति को अपडेट करने से रोकेगा जो डाली जा रही एक के समान है। उस कार्य को सही ढंग से करने के लिए आपके इंसर्ट में है सभी को सूचीबद्ध करने के लिए लक्ष्य तालिका के स्तंभ। अन्यथा topic is distinct from excluded
शर्त हमेशा सही रहेगी क्योंकि excluded
topic
. की तुलना में पंक्ति में कम कॉलम हैं पंक्ति और इस प्रकार यह इससे "अलग" है।
मेलिंग सूची में संशोधित मूल्यों के लिए एक चेक जोड़ने पर कई बार चर्चा की गई है और इसे हमेशा खारिज कर दिया गया है। इसका मुख्य कारण यह है कि प्रत्येक के लिए परिवर्तनों की जांच करने का ओवरहेड होना समझ में नहीं आता है कुछ बुरी तरह से लिखे गए बयानों से निपटने के लिए बयान।