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

Oracle डाटाबेस के लिए जॉइन सिंटैक्स के साथ अद्यतन करें

UPDATE स्टेटमेंट का सिंटैक्स है:

http://docs.oracle.com/cd/B19306_01 /server.102/b14200/statements_10007.htm

जहां dml_table_expression_clause है:

कृपया ( subquery ) . पर ध्यान दें उपरोक्त सिंटैक्स का हिस्सा।

subquery एक ऐसी सुविधा है जो जुड़ने का अद्यतन करने की अनुमति देती है।

सबसे सरल रूप में यह हो सकता है:

UPDATE (
   subquery-with-a-join
)
SET cola=colb

किसी जॉइन को अपडेट करने से पहले, आपको यहां सूचीबद्ध प्रतिबंधों के बारे में पता होना चाहिए:

https://docs.oracle.com/cd/B28359_01 /server.111/b28286/statements_8004.htm

  • एक सेट ऑपरेटर
  • एक विशिष्ट ऑपरेटर
  • एक समग्र या विश्लेषणात्मक कार्य
  • एक ग्रुप बाय, ऑर्डर बाय, मॉडल, कनेक्ट बाय, या स्टार्ट विथ क्लॉज
  • चयन सूची में एक संग्रह अभिव्यक्ति
  • चयन सूची में एक उपश्रेणी
  • केवल पढ़ने के लिए निर्दिष्ट एक उपश्रेणी
  • कुछ अपवादों के साथ जुड़ता है, जैसा कि Oracle डेटाबेस एडमिनिस्ट्रेटर गाइड में प्रलेखित है

और अद्यतन करने योग्य दृश्यों से संबंधित सामान्य नियम भी - यहाँ (अनुभाग:Updating a Join View ):
http://docs .oracle.com/cd/B19306_01/server.102/b14231/views.htm#sthref3055

हम पहले शामिल होने के साथ एक सबक्वेरी बना सकते हैं:

SELECT age 
FROM ages a
JOIN names m ON a.id = m.id
WHERE m.name = 'Sally'

यह क्वेरी केवल निम्नलिखित परिणाम लौटाती है:

       AGE
----------
        30

और अब हम अपनी क्वेरी को अपडेट करने का प्रयास कर सकते हैं:

UPDATE (
    SELECT age 
    FROM ages a
    JOIN names m ON a.id = m.id
    WHERE m.name = 'Sally'
)
SET age = age + 1;

लेकिन हमें एक त्रुटि मिलती है:

इस त्रुटि का अर्थ है, कि उपरोक्त प्रतिबंधों में से एक पूरा नहीं हुआ है (कुंजी-संरक्षित तालिका)।

हालांकि अगर हम अपनी टेबल में प्राथमिक कुंजी जोड़ते हैं:

alter table names add primary key( id );
alter table ages add primary key( id );

तो अब अपडेट बिना किसी त्रुटि के काम करता है और अंतिम परिणाम है:

select * from ages;

        ID        AGE
---------- ----------
         1         25
         2         31
         3         35



  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 के लिए NLS_LANG चुनना

  2. Sql:दो तिथियों के बीच का अंतर

  3. Oracle में ट्रिगर अमान्य है

  4. फील्डए से मूल्य लें, डीबी फ़ंक्शन को भेजें, फील्डबी को मूल्य वापस करें

  5. ओरेकल रिपोर्ट बिल्डर में पेज की चौड़ाई बढ़ाना