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

Oracle में अनुक्रम के साथ कई पंक्तियों को सम्मिलित करना

मल्टीटेबल इंसर्ट पर प्रतिबंधों में शामिल हैं:

  • आप मल्टीटेबल इंसर्ट स्टेटमेंट के किसी भी हिस्से में अनुक्रम निर्दिष्ट नहीं कर सकते। एक मल्टीटेबल इंसर्ट को सिंगल SQL स्टेटमेंट माना जाता है। इसलिए, NEXTVAL का पहला संदर्भ अगली संख्या उत्पन्न करता है, और कथन में बाद के सभी संदर्भ समान संख्या लौटाते हैं।

यह बिल्कुल सही नहीं है - आप एक अनुक्रम का उपयोग कर सकते हैं, यह हमेशा एक ही मान प्राप्त करता है, इसलिए एक ही अनुक्रम का हवाला देकर माता-पिता और बच्चे के रिकॉर्ड को एक बार में बनाना उपयोगी हो सकता है।

यदि आप insert all का उपयोग करना जारी रखना चाहते हैं आप कर सकते थे अनुक्रम मान प्राप्त करने वाले गैर-नियतात्मक फ़ंक्शन का उपयोग करके उसके आसपास काम करें:

CREATE FUNCTION get_seq RETURN NUMBER IS
BEGIN
  RETURN postal_code_seq.nextval;
END;
/

INSERT ALL
  INTO POSTAL_CODE( postal_code,description)
    VALUES(get_seq,'Coimbatore')
  INTO POSTAL_CODE (postal_code,description)
    VALUES(get_seq,'Mumbai') SELECT * FROM DUAL;

2 rows inserted.

SELECT * FROM postal_code;

                            POSTAL_CODE DESCRIPTION        
--------------------------------------- --------------------
                                      1 Coimbatore          
                                      2 Mumbai              

लेकिन यह थोड़ा अटपटा है। आप व्यक्तिगत सम्मिलन कथनों का उपयोग करने से शायद बेहतर हैं - एक तालिका में एक बहुआयामी डालने का उपयोग वास्तव में आपको बहुत कुछ प्राप्त नहीं कर रहा है - या अनुक्रम से अद्वितीय कॉलम सेट करने के लिए एक ट्रिगर, या सीटीई/इनलाइन व्यू मान उत्पन्न करने के लिए डालने के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लोब प्रतिधारण

  2. हाइबरनेट का उपयोग करके Oracle में बड़े BLOBs (>100MB) को कैसे बनाए रखें?

  3. Oracle में माइनस/प्लस साइन के साथ नंबर कैसे फॉर्मेट करें?

  4. OracleCommand SQL पैरामीटर्स बाइंडिंग

  5. Oracle VM Virtual Box के साथ एक वर्चुअल मशीन बनाना