शुरू करने के लिए, 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 उद्धृत करता हूं: