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

Node.js . का उपयोग करके पोस्टग्रेज में अप्सर्ट करें

आपके प्रश्न का तत्काल उत्तर एक अपरर्ट करने के लिए संग्रहीत कार्यविधि का उपयोग करना है।

http://www.postgresql .org/docs/current/static/plpgsql-control-structs.html#PLPGSQL-UPSERT-EXAMPLE

कुछ इस तरह पीजी मॉड्यूल के साथ ठीक काम करता है।

client.query({
  text: "SELECT upsert($1, $2, $3, $4, $5, $6)"
  values: [ obj.id, 
            obj.first_name,
            obj.last_name,
            1,
            ip,
            date_now.getFullYear() + "-" + month + "-" + date_now.getDate() + " " + date_now.getHours() + ":" + date_now.getMinutes() + ":" + date_now.getSeconds()
          ]
}, function(u_err, u_result){
  if(err) // this is a real error, handle it

  // otherwise your data is updated or inserted properly
});

बेशक यह मानता है कि आप किसी प्रकार की मॉडल ऑब्जेक्ट का उपयोग कर रहे हैं जिसमें आपके लिए आवश्यक सभी मूल्य हैं, भले ही वे बदल नहीं रहे हों। आपको उन सभी को अपर में पास करना होगा। यदि आप इसे यहां दिखाए गए तरीके से कर रहे हैं, तो आपको यह निर्धारित करने के लिए अद्यतन के बाद वास्तविक त्रुटि ऑब्जेक्ट की जांच करनी चाहिए कि क्या यह विफल हो गया है क्योंकि पंक्ति पहले से ही है, या किसी अन्य कारण से (जो वास्तविक डीबी त्रुटि है कि संभालने की जरूरत है)।

फिर आपको अपने अपडेट के विफल होने और आपके इंसर्ट के समय के बीच संभावित दौड़ की स्थिति से निपटना होगा। यदि कोई अन्य फ़ंक्शन उसी आईडी से सम्मिलित करने का प्रयास करता है, तो आपको एक समस्या है। लेन-देन उसके लिए अच्छा है। मुझे अभी इतना ही मिला है। आशा है कि यह मदद करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL क्वेरी के साथ Postgresql में फ़ंक्शन, अनुक्रम, प्रकार आदि की परिभाषा प्राप्त करें

  2. किसी अन्य नाम का उपयोग करके ORDER में CASE पोस्टग्रेट करता है

  3. संभावित रिक्त फ़ील्ड के साथ Django OneToOneField

  4. स्ट्रक्चरस्कैन के साथ संरचना में पोस्टग्रेस्क्ल सरणी प्राप्त करें

  5. PostgreSQL में गतिरोध का अनुकरण कैसे करें?