इस तरह के इंसर्ट चेनिंग के लिए आपको एक सामान्य टेबल एक्सप्रेशन की आवश्यकता है:
with ta as (
INSERT INTO tbl_b (status) VALUES ('OK')
RETURNING id
)
INSERT INTO tbl_a (name, tbl_b_reference)
VALUES ('myName', (select id from ta));
एक अन्य विकल्प केवल lastval()
. का उपयोग करना है अंतिम उत्पन्न अनुक्रम मान को संदर्भित करने के लिए फ़ंक्शन:
INSERT INTO tbl_b (status) VALUES ('OK');
INSERT INTO tbl_a (name, tbl_b_reference)
VALUES ('myName', lastval());
ध्यान दें कि आपके पास कोई अन्य कथन नहीं होना चाहिए जो उन दोनों के बीच अनुक्रम मान उत्पन्न करता हो।
या currval() फ़ंक्शन का उपयोग करें:
INSERT INTO tbl_b (status) VALUES ('OK');
INSERT INTO tbl_a (name, tbl_b_reference)
VALUES ('myName', currval('tbl_b_id_seq'));
'tbl_b_id_seq'
एक मानक नाम है जिसे Postgres एक अनुक्रम के लिए उपयोग करता है जो एक serial
. के लिए बनाया गया है कॉलम: