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

Oracle SQL अपडेट क्वेरी को अपडेट होने में कुछ दिन लगते हैं

आप इसे आजमा सकते हैं

  1  MERGE
  2     INTO  target_table tgt
  3     USING source_table src
  4     ON  ( src.object_id = tgt.object_id )
  5  WHEN MATCHED
  6  THEN
  7     UPDATE
  8     SET   tgt.object_name = src.object_name
  9     ,     tgt.object_type = src.object_type
 10  WHEN NOT MATCHED
 11  THEN
 12     INSERT ( tgt.object_id
 13            , tgt.object_name
 14            , tgt.object_type )
 15     VALUES ( src.object_id
 16            , src.object_name
 17            , src.object_type );

वाक्य रचना पहली बार में थोड़ा कठिन लगता है, लेकिन अगर हम ऊपर से नीचे तक पढ़ते हैं, तो यह काफी सहज है। निम्नलिखित खंडों पर ध्यान दें:

•MERGE (पंक्ति 1):जैसा कि पहले बताया गया है, यह अब Oracle में चौथा DML स्टेटमेंट है। कोई भी संकेत जो हम जोड़ना चाहते हैं, सीधे इस कीवर्ड का अनुसरण करें (अर्थात MERGE /*+ HINT */);

•INTO (पंक्ति 2):इस प्रकार हम MERGE के लिए लक्ष्य निर्दिष्ट करते हैं। लक्ष्य या तो एक तालिका या एक अद्यतन करने योग्य दृश्य होना चाहिए (एक इन-लाइन दृश्य का उपयोग यहां नहीं किया जा सकता है);

•USING (पंक्ति 3):USING क्लॉज MERGE के लिए स्रोत डेटासेट का प्रतिनिधित्व करता है। यह एक एकल तालिका हो सकती है (जैसा कि हमारे उदाहरण में है) या एक इन-लाइन दृश्य;

•ON () (पंक्ति 4):ON क्लॉज वह जगह है जहां हम स्रोत डेटासेट और लक्ष्य तालिका के बीच जुड़ने की आपूर्ति करते हैं। ध्यान दें कि शामिल होने की शर्तें कोष्ठक में होनी चाहिए;

•जब मिलान किया गया (पंक्ति 5):यह खंड वह जगह है जहां हम ओरेकल को निर्देश देते हैं कि क्या करना है जब हमारे पास लक्ष्य तालिका में पहले से ही एक मिलान रिकॉर्ड होता है (यानी स्रोत और लक्ष्य डेटासेट के बीच एक जुड़ाव होता है)। हम स्पष्ट रूप से इस मामले में एक अद्यतन चाहते हैं। इस क्लॉज के प्रतिबंधों में से एक यह है कि हम ON क्लॉज में उपयोग किए गए किसी भी कॉलम को अपडेट नहीं कर सकते हैं (हालांकि निश्चित रूप से हमें इसकी आवश्यकता नहीं है क्योंकि वे पहले से ही मेल खाते हैं)। जॉइन कॉलम को शामिल करने का कोई भी प्रयास एक अनजाने अमान्य पहचानकर्ता अपवाद को जन्म देगा; और

•जब मिलान नहीं किया गया (पंक्ति 10):यह खंड वह जगह है जहां हम रिकॉर्ड दर्ज करते हैं जिसके लिए कोई मौजूदा मिलान नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle ड्राइवर मेमोरी लीक - Tomcat

  2. केवल एक कॉलम द्वारा Oracle समूह

  3. मैं समग्र कार्यों के साथ SELECT... FOR UPDATE का उपयोग क्यों नहीं कर सकता?

  4. SQL - अधिकांश कॉलम मिलान वाली पंक्तियाँ लौटाएँ

  5. JDBC खाली परिणाम सेट लौटा रहा है