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

PostgreSQL मल्टी INSERT...कई कॉलम के साथ रिटर्निंग

डेटा-संशोधित CTEs का उपयोग करें अपने तीन INSERTs को चेन करने के लिए। कुछ इस तरह:

WITH ins1 AS (
   INSERT INTO table1 (username, name,  surname)
   VALUES ('johnee','john','smith')
   RETURNING user_id
   )
, ins2 AS (
   INSERT INTO table2 (user_id, password)
   SELECT ins1.user_id, 'secret'
   FROM   ins1                            -- nothing to return here
   )
INSERT INTO table3 (user_id, adress, city, phone)
SELECT ins1.user_id, ...
FROM   ins1
RETURNING user_id;
  • आमतौर पर कॉलम परिभाषा सूची add जोड़ना सबसे अच्छा होता है INSERT . के लिए एस (विशेष मामलों को छोड़कर)। अन्यथा, यदि तालिका संरचना बदलती है, तो आपका कोड आश्चर्यजनक तरीके से टूट सकता है।

  • मैंने उन कॉलमों को छोड़ दिया जहां आप बस DEFAULT enter दर्ज करेंगे . डिफ़ॉल्ट स्वचालित रूप से डाले जाते हैं। छोटा, वही परिणाम।

  • अंतिम, वैकल्पिक RETURNING परिणामी user_id लौटाता है - जाहिर है एक अनुक्रम या किसी अन्य डिफ़ॉल्ट से। यह वास्तव में user_id है table3 . से , लेकिन यह वही है जब तक कि आपके पास कुछ ट्रिगर या अन्य जादू हस्तक्षेप न हो।

डेटा-संशोधित करने के बारे में अधिक (उर्फ "लिखने योग्य") सीटीई:

  • क्या केवल SELECT टाइप क्वेश्चन ही नेस्ट किया जा सकता है?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे जांचें कि PostgreSQL में ट्रिगर मौजूद है या नहीं?

  2. PostgreSQL 11 . में PL/Java 1.5.2 स्थापित करें

  3. PostgreSQL बल्क डेटा लोड करने के लिए 7 सर्वोत्तम अभ्यास युक्तियाँ

  4. मैं PostgreSQL तालिका में पंक्तियों की गिनती कैसे तेज करूं?

  5. पोस्टग्रेस्क्ल कंसोल में सामान्य होने पर क्वेरी सीएसवी फ़ाइल में क्यों नहीं सहेजी जाएगी?