PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

जब फ़ील्ड अपडेट से पहले और बाद में सभी समान हों, तो क्या वाकई पेज फ़ाइल को पोस्टग्रेज कर दिया जाएगा?

पोस्टग्रेज (लगभग सभी अन्य डीबीएमएस की तरह) यह जांच नहीं करेगा कि लक्ष्य मान अलग हैं या नहीं। तो उत्तर है:हाँ, यह पंक्ति को अद्यतन करेगा भले ही मान भिन्न हों।

हालांकि, आप इस मामले में "खाली" अपडेट को कहां शामिल करके आसानी से रोक सकते हैं:

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 . की तुलना में पंक्ति में कम कॉलम हैं पंक्ति और इस प्रकार यह इससे "अलग" है।

मेलिंग सूची में संशोधित मूल्यों के लिए एक चेक जोड़ने पर कई बार चर्चा की गई है और इसे हमेशा खारिज कर दिया गया है। इसका मुख्य कारण यह है कि प्रत्येक के लिए परिवर्तनों की जांच करने का ओवरहेड होना समझ में नहीं आता है कुछ बुरी तरह से लिखे गए बयानों से निपटने के लिए बयान।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक दिन का अंत कैसे प्राप्त करें?

  2. अगली पंक्ति से मूल्य के साथ तालिका में कॉलम जोड़ना

  3. पंक्ति प्रकार की जाँच करते समय IS NOT NULL गलत क्यों है?

  4. MySQL/पोस्टग्रेस क्वेरी 5 मिनट अंतराल डेटा

  5. PostgreSQL पंक्ति लॉक पढ़ें