2012-05-14 19 views
6

क्या ओरेकल में merge फ़ंक्शन का उपयोग करके कई तालिकाओं को संशोधित करना संभव है? प्रत्येक मामले विभिन्न कार्यों की जरूरत में ले जाया जा रहा है, जैसे:मर्ज करें: एकाधिक तालिकाओं को संशोधित करना

MERGE INTO users tab1 
USING(SELECT 1 id, 10 points FROM dual) tab2 
ON(tab1.id = tab2.id) 
WHEN MATCHED THEN 
    UPDATE SET points = tab2.points 
    UPDATE "abc" = action.status -- another table 
WHEN NOT MATCHED THEN 
    INSERT(id, points) VALUES(tab2.id, tab2.points) 
    UPDATE "def" = action.status -- another table 

उत्तर

7

प्रलेखन अनुसार, सरल उत्तर है नहीं। The syntax एक तालिका या दृश्य का समर्थन करता है। हालांकि, एक अद्यतन दृश्य के साथ, आप एक बहु-टेबल सम्मिलन/अद्यतन पूरा कर सकते हैं।

आपका उदाहरण कुछ ऐसा करने का प्रयास करता है जो आप नहीं कर सकते हैं। जब मिलान किया गया खंड निर्दिष्ट करता है कि अद्यतन करना क्या है। आप इस खंड से INSERT नहीं कर सकते हैं। जब भी खंडित नहीं किया गया है, तब भी वही बात - आप इस खंड से केवल अपडेट नहीं कर सकते हैं।

+0

"हालांकि, एक अद्यतन दृश्य के साथ, आप एक बहु-टेबल सम्मिलन/अद्यतन पूरा कर सकते हैं।" मुश्किल से। मैंने खोज की ([और पूछा] (http://stackoverflow.com/questions/37690394)) और ऐसा लगता है कि यह समर्थित नहीं है। एक सामान्य त्रुटि यह है: 'ORA-38106: MERGE ट्रिगर के इंस्टॉलेशन के साथ जुड़ने या देखने पर समर्थित नहीं है। –

संबंधित मुद्दे