Postgres SQL में कोई चर नहीं हैं (आप केवल प्रक्रियात्मक भाषाओं में चर का उपयोग कर सकते हैं)।
RETURNING
का उपयोग करें में WITH
क्वेरी:
WITH insert_cat AS (
INSERT INTO main_categorie (description)
VALUES ('Verbe normal')
RETURNING id
),
insert_mot AS (
INSERT INTO main_mot (txt,im,date_c,date_v_d,date_l)
VALUES ('je m''abaisse',1,NOW(),NOW(),NOW())
RETURNING id
)
INSERT INTO main_motcategorie (mot_id,categorie_id)
SELECT m.id, c.id
FROM insert_mot m, insert_cat c;
एक विकल्प के रूप में, आप इस पोस्ट में वर्णित तरीके से कस्टम कॉन्फ़िगरेशन पैरामीटर का उपयोग कर सकते हैं ।
दो कार्य बनाएँ:
create or replace function set_var (name text, value text)
returns void language plpgsql as $$
begin
execute format('set mysql.%s to %s', name, value);
end $$;
create or replace function get_var (name text)
returns text language plpgsql as $$
declare
rslt text;
begin
execute format('select current_setting(''mysql.%s'')', name) into rslt;
return rslt;
end $$;
फ़ंक्शंस के साथ आप चर का अनुकरण कर सकते हैं, जैसे उदाहरण में:
INSERT INTO main_categorie (description)
VALUES ('Verbe normal');
SELECT set_var('PRONOMINAL', (SELECT currval('main_categorie_id_seq')::text));
INSERT INTO main_mot (txt,im,date_c,date_v_d,date_l)
VALUES ('je m''abaisse',1,NOW(),NOW(),NOW());
SELECT set_var('verbe_149', (SELECT currval('main_mot_id_seq')::text));
INSERT INTO main_motcategorie (mot_id,categorie_id)
SELECT get_var('verbe_149')::int, get_var('PRONOMINAL')::int;
यह निश्चित रूप से अच्छे कोड का उदाहरण नहीं है। विशेष रूप से कास्टिंग की आवश्यकता परेशानी है। हालांकि, रूपांतरण अर्ध-स्वचालित रूप से किया जा सकता है।