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

search_path के संबंध में डिफ़ॉल्ट मान अभिव्यक्ति फ़ंक्शन कब/कैसे बाध्य हैं?

डिफ़ॉल्ट मान निर्माण समय पर पार्स किए जाते हैं (प्रारंभिक बाध्यकारी!)। आप psql, pgAdmin या अन्य क्लाइंट में जो देखते हैं वह एक टेक्स्ट प्रतिनिधित्व है, लेकिन वास्तव में, OID फ़ंक्शन का now() कॉलम डिफॉल्ट बनाते समय सिस्टम कैटलॉग pg_attrdef . मैं बोली:

adbin   pg_node_tree  The internal representation of the column default value
adsrc   text          A human-readable representation of the default value

जब आप search_path , जो पोस्टग्रेज़ को स्कीमा-योग्य फ़ंक्शन का नाम प्रदर्शित करने का कारण बनता है, क्योंकि इसे वर्तमान search_path के साथ सही ढंग से हल नहीं किया जाएगा। ।

डंप और पुनर्स्थापना आपके कस्टम search_path . से संबंधित नहीं हैं स्थापना। उन्होंने इसे स्पष्ट रूप से सेट किया। तो आप जो देख रहे हैं वह डंप / पुनर्स्थापना चक्र से संबंधित नहीं है।

अंतर्निहित कार्यों को ओवरराइड करें

public रखना pg_catalog . से पहले search_path . में एक खतरे का खेल . है . वंचित उपयोगकर्ताओं (स्वयं सहित) को अक्सर वहां लिखने और ऐसे फ़ंक्शन बनाने की अनुमति दी जाती है जो अनजाने में सिस्टम के कार्यों को रद्द कर सकते हैं - मनमाने (या दुर्भावनापूर्ण) परिणाम के साथ।

आप एक प्रतिबंधित पहुंच के साथ समर्पित स्कीमा चाहते हैं अंतर्निहित कार्यों को ओवरराइड करने के लिए। इसके बजाय कुछ इस तरह का प्रयोग करें:

SET search_path = override, pg_catalog, public;

इसमें विवरण dba.SE पर संबंधित उत्तर



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. \data\base पोस्टग्रेज फोल्डर का डेटाबेस नाम कैसे खोजें?

  2. PostgreSQL GIN अनुक्रमणिका pg_trgm के लिए GIST से धीमी है?

  3. क्वेरी आउटपुट से प्रारंभ और समाप्ति टाइमस्टैम्प के साथ आंशिक रूप से/पूरी तरह से ओवरलैपिंग ईवेंट कैसे निकालें?

  4. Postgresql स्तंभ संदर्भ आईडी अस्पष्ट है

  5. विंडोज़ पर PostgreSQL को मैन्युअल रूप से कैसे कॉन्फ़िगर और प्रारंभ करें?