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

एक खाली hstore कॉलम में एक कुंजी जोड़ना

मुझे लगता है कि यहां समस्या यह है कि आपके पास जो स्टोर है वह शून्य है, और शून्य है या कुछ hstore शून्य है।

मेरे पास सबसे अच्छा समाधान है, जो शायद सबसे अच्छा समाधान नहीं है, तालिका को शून्य की अनुमति देने के बजाय डिफ़ॉल्ट खाली hstore के साथ बनाना है। तब आपके उदाहरण काम करते हैं जैसे आप चाहेंगे:

postgres=# create table htest (t text, h hstore default hstore(array[]::varchar[]));
CREATE TABLE
postgres=# insert into htest (t) values ('key');
INSERT 0 1
postgres=# update htest set h = h || ('foo'=>'bar') where t='key';
UPDATE 1
postgres=# select * from htest;
  t  |      h       
-----+--------------
 key | "foo"=>"bar"
(1 row)

दुर्भाग्य से मुझे hstore(array[]::varchar[]) की तुलना में एक खाली hstore बनाने का एक क्लीनर तरीका नहीं दिख रहा है लेकिन इसका मतलब यह नहीं है कि कोई बेहतर तरीका नहीं है। आप इसे पहले से ही अपने hstore अपडेट में शामिल कर सकते हैं:

update htest set h = coalesce(h, hstore(array[]::varchar[])) || ('foo'=>'bar') where t='key';

इस तरह आपको तालिका को फिर से बनाने की आवश्यकता नहीं है। हालांकि मुझे यह काफी स्थूल लगता है। आशा है कि यह मदद करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cloud9 + रेल + Postgresql उपयोग

  2. Postgres . में Concat पंक्तियाँ

  3. PostgreSQL क्वेरी पर खराब प्रदर्शन

  4. pyspark शेल में jdbc का उपयोग करके पोस्टग्रेज से कनेक्ट करने में सक्षम नहीं है

  5. पोस्टग्रेएसक्यूएल में टाइमस्टैम्प कॉलम मानों को युग में कनवर्ट करें क्वेरी का चयन करें