में कुछ पंक्तियों को कुशलता से डुप्लिकेट करें मेरे पास PostgreSQL 9 डेटाबेस है जो प्राथमिक कुंजी के रूप में स्वत: वृद्धिशील पूर्णांक का उपयोग करता है। मैं एक पंक्ति में कुछ पंक्तियों को डुप्लिकेट करना चाहता हूं (कुछ फ़िल्टर मानदंडों के आधार पर), एक या दो मानों को बदलते समय, यानी आईडी (जो स्वत: जेनरेट किया गया है) और संभवतः एक और कॉलम को छोड़कर सभी कॉलम मानों की प्रतिलिपि बनाएँ।PostgreSQL तालिका
हालांकि, मैं भी पुराने से नए आईडी में मैपिंग प्राप्त करना चाहता हूं। क्या ऐसा करने का कोई बेहतर तरीका है तो पंक्तियों के लिए पहली बार प्रतिलिपि बनाने के लिए पूछताछ करें और फिर एक बार में नई पंक्तियां डालें?
अनिवार्य रूप से मैं इस तरह कुछ करना चाहता हूँ:
INSERT INTO my_table (col1, col2, col3)
SELECT col1, 'new col2 value', col3
FROM my_table old
WHERE old.some_criteria = 'something'
RETURNING old.id, id;
हालांकि, इस ERROR: missing FROM-clause entry for table "old"
साथ विफल रहता है और मैं देख सकता हूँ क्यों: Postgres का चयन पहले कर रही होगी और फिर इसे डालने और RETURNING
खंड केवल पहुँच गया है नई डाली गई पंक्ति के लिए।
आप विचार है करने के लिए कैसे आपकी क्वेरी करने के लिए डब्ल्यू/सभी विशेषताओं नामकरण ओ मैं प्रतिलिपि बनाना चाहते हो रहे हैं? मेरे पास बहुत बड़ी मेज है (बहुत सारे गुणों के साथ) और उन सभी को टाइप करना और भूलना एक दर्द नहीं है ... –
एक ही चीज़ के बारे में दो प्रश्न क्यों? http://stackoverflow.com/questions/29256888/insert-into-from-select-returning-id-mappings – murison