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

एक इनपुट सरणी के आधार पर यूपीएसईआरटी के फ़ंक्शन में सुधार करना

हमारे पास पोस्टग्रेज़ में केंद्रीय तालिकाओं तक पहुंचने वाले कई अलग-अलग सर्वर हैं, जो एक और शिकन जोड़ता है। यदि मैं अपनी तालिका में एक कॉलम जोड़ूँ तो क्या होगा:

ALTER TABLE item ADD COLUMN category citext;

अब टेबल में तीन के बजाय चार कॉलम हैं।

मेरे सभी मौजूदा पुश तुरंत ब्रेक क्योंकि अब इनपुट से एक कॉलम गायब है। इस बात की 0% संभावना है कि हम सभी सर्वर को एक साथ अपडेट कर सकते हैं, इसलिए यह कोई विकल्प नहीं है।

एक समाधान तालिका के प्रत्येक संस्करण के लिए एक कस्टम प्रकार बनाना है:

CREATE TYPE item_v1 AS (
    id uuid,
    marked_for_deletion boolean,
    name_ citext);

CREATE TYPE item_v2 AS (
    id uuid,
    marked_for_deletion boolean,
    name_ citext,
    category citext);

और फिर प्रत्येक प्रकार के लिए एक फ़ंक्शन:

CREATE OR REPLACE FUNCTION data.item_insert_array (data_in item_v1[]) 
etc.

CREATE OR REPLACE FUNCTION data.item_insert_array (data_in item_v2[]) 
etc.

मुझे लगता है कि आपके पास एक एकल जीनोर्मस विधि हो सकती है जो किसी भी सरणी को लेती है और किस कोड को चलाने के लिए एक केस का उपयोग करती है। मैं कुछ कारणों से ऐसा नहीं करूंगा, लेकिन मुझे लगता है कि आप ऐसा कर सकते थे। (मैंने देखा है कि दृष्टिकोण एक से अधिक भाषाओं में एक वास्तविक जल्दी में गैंगरेनस हो जाता है।)

यह सब कुछ उचित काम की तरह लगता है। क्या कोई आसान तकनीक है जो मुझे याद आ रही है? मैं कल्पना कर रहा हूं कि आप संरचित टेक्स्ट/एक्सएमएल/जेएसओएन सबमिट कर सकते हैं, इसे अनपैक कर सकते हैं और वहां से काम कर सकते हैं। लेकिन मैं नहीं होता फ़ाइल जो "सरल" के अंतर्गत है।

मैं अभी भी यहां डिजाइन के माध्यम से काम कर रहा हूं, जाहिर है। मैंने जो दिखाया है उसका परीक्षण करने के लिए मैंने पर्याप्त कोड लिखा है, लेकिन वापस जाने और दर्जनों तालिकाओं पर इसे लागू करने से पहले विवरणों को छांटना चाहता हूं।

किसी भी मदद के लिए धन्यवाद।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RPAD () PostgreSQL में फ़ंक्शन

  2. रेल:हरोकू की तैनाती, कई समस्याएं

  3. PostgreSQL में रेडियन () फ़ंक्शन कैसे काम करता है

  4. PostgreSQL का उपयोग करके मूडल के लिए अत्यधिक उपलब्ध डेटाबेस बनाना

  5. एक ही समय में कैसे अद्यतन और चयन करें