2013-03-04 11 views
7

में डालें नहीं, मुझे यह जांचना होगा कि कोई पंक्ति मौजूद है या नहीं। यदि यह अस्तित्व में नहीं है, तो इसे डाला जाना चाहिए।यदि कोई पंक्ति मौजूद नहीं है तो अन्य पोस्टग्रेज़

यह postgres में है और मैं एक शैल स्क्रिप्ट के माध्यम से पंक्ति डालने की कोशिश कर रहा हूं। जब मैं स्क्रिप्ट चलाता हूं तो यह त्रुटि नहीं दिखाता है लेकिन यह तालिका में सम्मिलित नहीं होता है, भले ही कोई मिलान पंक्ति मौजूद न हो।

+6

स्क्रिप्ट प्रयोग कर रहे हैं और बयान आप अगर कोई है "कोई मिलता-जुलता पंक्ति" परीक्षण करने के लिए प्रयोग कर रहे हैं कृपया पोस्ट का उल्लेख है। – Aushin

+1

यह लिंक देखें http://stackoverflow.com/questions/4555966/merge-syntax-used-to-upsert-or-insert-on-duplicate-update – Kuberchaun

+0

यदि आप रूबी को अपनी स्क्रिप्टिंग भाषा के रूप में उपयोग कर सकते हैं, तो आप कोशिश कर सकते हैं [ 'अप्सर्ट'] (https://github.com/seamusabshere/upsert) –

उत्तर

21

मैं समाधान चाहते वे here

INSERT INTO table (id, field, field2) 
     SELECT 3, 'C', 'Z' 
     WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3); 
+0

मैंने इस समाधान की कोशिश की और यह कम संस्करण के रूप में काम नहीं कर रहा है। इसलिए, मैं दोनों को दो अलग-अलग प्रश्नों में विभाजित करना चाहता था। – JumpOffBox

+0

पोस्टग्रेस में अब एक अप्सर्ट कमांड है जहां आप एक पंक्ति डाल सकते हैं या अपडेट कर सकते हैं: https://wiki.postgresql.org/wiki/UPSERT –

+0

9.5+ पर, 'INSERT ... कॉन्फ़्लिक्ट पर कुछ भी नहीं' या 'INSERT ... कॉन्फ्लिक्ट अद्यतन पर https://stackoverflow.com/a/17267423/1386245 – Rohmer

संबंधित मुद्दे