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

एक संघर्ष खंड में एक plpgsql चर नाम को कैसे स्पष्ट करें?

शुरू करने के लिए, name चर और विशेषता दोनों के लिए एक बुरा नाम है। जब आपके पास दोनों हों, तो कोड अच्छा नहीं लगेगा। इसे ध्यान में रखते हुए, आप लेबल वाले ब्लॉक के साथ "उपसर्ग" चर कर सकते हैं (उदाहरण के लिए नीचे <<fn>>``), and set वेरिएबल_कॉन्फ्लिक्ट' कॉलम नाम को वरीयता देने के लिए, नीचे दिए गए कोड को देखें:

t=# create or replace function func(
    name text
) returns void language plpgsql as
$$
#variable_conflict use_column
<<fn>>
declare name text :='blah';
begin
    insert into test (name) values (name)
    on conflict (name) do            -- this no longer fails
    update set name = fn.name;
end;
$$;
t=# insert into test select 'b';
INSERT 0 1
Time: 8.076 ms
t=# select func('b');
 func
------

(1 row)

Time: 6.117 ms
t=# select * from test;
 name
------
 b
 blah
(2 rows)

https://www.postgresql.org /docs/current/static/plpgsql-implementation.html#PLPGSQL-VAR-SUBST

और आगे - मूल रूप से पूरा लिंक इसके बारे में है।

और फिर भी - यह प्रदर्शित करने के बाद कि plpgsql के साथ यह कैसे विशेष कार्य आसानी से किया जा सकता है, मैं अभी भी namual उद्धृत करता हूं:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORM/क्वेरी बिल्डर लाइब्रेरी कनेक्शन पूल साइज और pgbouncer कनेक्शन पूल साइज में क्या अंतर है?

  2. PostgreSQL regexp_replace() सिर्फ एक खाली जगह रखने के लिए

  3. PostgreSQL में अहस्ताक्षरित पूर्णांक क्यों उपलब्ध नहीं है?

  4. रेक डीबी:थ्रो डेटाबेस बनाएं पोस्टग्रेस्क्ल के साथ त्रुटि मौजूद नहीं है

  5. PostgreSQL:SQL स्क्रिप्ट उन सभी तालिकाओं की सूची प्राप्त करने के लिए जिनमें एक विशेष कॉलम विदेशी कुंजी के रूप में है