क्रिएट या रिप्ले के साथ PostgreSQL दृश्यों में कॉलम का नाम नहीं बदल सकते


37

PostreSQL 8.3 में, मैं एक दृश्य बनाने की कोशिश कर रहा हूं, जो एक मौजूदा तालिका की तरह दिखाई देगा, लेकिन इसमें अलग-अलग कॉलम नाम होंगे।

यह काम

CREATE OR REPLACE VIEW gfam.nice_builds AS 
 SELECT (family_tree.family_tree_id) as x,
        family_tree.family_tree_name, family_tree.family_tree_description
   FROM gfam.family_tree;

उपरोक्त family_tree तालिका का एक डुप्लिकेट बनाता है, लेकिन निम्न प्रयास विफल रहता है:

CREATE OR REPLACE VIEW gfam.nice_builds AS 
 SELECT (family_tree.family_tree_id) as x,
        family_tree.family_tree_name, family_tree.family_tree_description
   FROM gfam.family_tree;
  • त्रुटि: दृश्य कॉलम का नाम नहीं बदल सकता है "family_tree_id"

मैं कॉलम का नाम कैसे बदल सकता हूं?

जवाबों:


44

मैं आपकी त्रुटि को पुन: उत्पन्न कर सकता हूं ... मेरे मामले में, मैंने पहले 'तिथि' के रूप में एक स्तंभ बनाया, फिर 'x' के रूप में (यह देखने की कोशिश कर रहा था कि क्या यह आरक्षित शब्द के साथ एक मुद्दा था; यह नहीं था:

ERROR:  cannot change name of view column "date" to "x"

यदि आप drop viewपहले जारी करते हैं , तो यह आपको बदले हुए नाम के साथ दृश्य को फिर से बनाने देगा। मुझे नहीं पता कि create or replaceवह ऐसा क्यों नहीं करेगा।


कॉलिन टी हार्ट द्वारा स्पष्टीकरण :

प्रलेखन के लिएCREATE VIEW यह बहुत अच्छी तरह से बताते हैं, मुझे लगता है कि:

नई क्वेरी को उसी स्तंभ को उत्पन्न करना चाहिए जो मौजूदा दृश्य क्वेरी (उसी क्रम में समान स्तंभ नाम और समान डेटा प्रकार) द्वारा उत्पन्न किया गया था, लेकिन यह सूची के अंत में अतिरिक्त कॉलम जोड़ सकता है।


दरअसल, आपको नए कॉलम को सेलेक्ट कॉलम सूची के अंत में जोड़ना होगा, अन्यथा आपको त्रुटि मिलेगी!

1
थोड़ी-सी ऑफ-टॉपिक टिप्पणी: जब मैंने दो टेबल से डेटा को देखने की सहायता से एकत्र करने की कोशिश की है तो मैंने भी इसी मुद्दे का सामना किया है। लेकिन वास्तव में मेरे पास अलग-अलग प्रकार ( VARCHARपहली तालिका में, और TEXTदूसरी तालिका में) समान नाम वाले कॉलम के लिए थे। मैंने जांच के लिए बहुत समय बिताया जब तक मैंने ध्यान नहीं दिया कि VARCHARदोनों तालिकाओं के लिए आईडीई प्रदर्शित करता है ! केवल शुद्ध pg_dumpने मेरी मदद की।
flaz14

30

आप ALTER TABLE tbl RENAME COLUMN foo TO barदृश्य स्तंभों का नाम बदलने के लिए भी उपयोग कर सकते हैं ।


tblयहाँ क्या है ? क्या यह वास्तविक तालिका है जिसके लिए दृश्य बनाया गया है या यह दृश्य नाम है?
यूजेन कोनकोव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.