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

विचारों में प्रयुक्त PostgreSQL कॉलम बदलें

इस मामले का स्थायी समाधान

समस्या से पूरी तरह बचने के लिए डेटा प्रकार text . का उपयोग करें या varchar / character varying character varying(n) के बजाय लंबाई विनिर्देशक के बिना . इन डेटा प्रकारों के बारे में मैनुअल में पढ़ें।

CREATE TABLE monkey(name text NOT NULL)

यदि आप वास्तव में अधिकतम लंबाई लागू करना चाहते हैं, तो एक CHECK . बनाएं बाधा :

ALTER TABLE monkey 
  ADD CONSTRAINT monkey_name_len CHECK (length(name) < 101);

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

विस्तृत विवरण

जैसा कि @Michael द्वारा प्रस्तावित किया गया है, मैं कुछ और सामान्य जानकारी जोड़ता हूं:

PostgreSQL में एक दृश्य केवल "उपनाम से उपश्रेणी" नहीं है। दृश्यों को एक नियम के साथ विशेष तालिकाओं के रूप में कार्यान्वित किया जाता है ON SELECT TO my_view DO INSTEAD . (इसीलिए आप ALTER TABLE . के साथ विचारों को बदल सकते हैं आदेश।) आप GRANT . कर सकते हैं इसमें विशेषाधिकार, टिप्पणियां जोड़ें या यहां तक ​​कि कॉलम डिफॉल्ट्स को परिभाषित करें (नियम के लिए उपयोगी ON INSERT TO my_view DO INSTEAD... ) यहाँ या यहाँ मैनुअल में और पढ़ें।

यदि आप अंतर्निहित वस्तुओं को बदलते हैं, तो आपको किसी भी निर्भर दृश्य की परिभाषित क्वेरी को भी बदलना होगा। ALTER VIEW कथन केवल एक दृश्य की सहायक विशेषताओं को बदल सकता है। CREATE OR REPLACE VIEW का उपयोग करें क्वेरी बदलने के लिए - यह किसी भी अतिरिक्त विशेषता को सुरक्षित रखेगा।

हालांकि, यदि आप परिणामी स्तंभों के डेटा प्रकार बदलना चाहते हैं (जैसे हाथ में मामले में), CREATE OR REPLACE VIEW संभव नहीं है। आपको DROP करना होगा पुराना और CREATE एक नया दृश्य। यह अंतर्निहित तालिकाओं के किसी भी डेटा को कभी नहीं हटाएगा। यह करेगा हालांकि, दृश्य के किसी भी अतिरिक्त गुण को छोड़ दें, जिसे फिर से बनाना होगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL के लिए ट्यूनिंग इनपुट/आउटपुट (I/O) संचालन

  2. PostgreSQL में unpivot () के बराबर

  3. ClusterControl - उन्नत बैकअप प्रबंधन - PostgreSQL

  4. ट्रिगर फ़ंक्शन में गतिशील तालिका नाम के साथ INSERT

  5. Postgresql:पासवर्ड के साथ स्क्रिप्टिंग psql निष्पादन