2012-05-14 24 views
6

Oracle'da merge işlevini kullanarak birkaç tabloyu değiştirmek mümkün mü? Farklı işlemler gerek Her durumda gibi, alınacak: belgelerine göreBirleştirme: Birden çok tabloyu değiştirme

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 

cevap

7

, basit cevap hayır. The syntax, bir tabloyu veya görünümü destekler. Ancak, güncellenebilir bir görünümle, çok masalı bir ek/güncelleme gerçekleştirebilirsiniz.

Örneğiniz, yapamayacağınız başka bir şey yapmayı deniyor gibi görünüyor. WHEN MATCHED cümlesi ne zaman güncelleneceğini belirtir. Bu maddeden INSERT olamaz. NE DEĞİŞTİRİLMİŞ ANCAK için aynı şey - bu maddeden GÜNCELLEMEZ, sadece INSERT.

+0

"Ancak, güncelleştirilebilir bir görünümde, çok masalı bir ekleme/güncelleştirme gerçekleştirebilirsiniz." Zorlukla. Arama yaptım ((ve sordum) (http://stackoverflow.com/questions/37690394)) ve desteklenmiyor gibi görünüyor. Tipik bir hata: ORA-38106: Birleştirme görünümünde desteklenmiyor veya INSTEAD OF tetikleyicisi ile görüntüleniyor. –

İlgili konular