2012-05-14 7 views
6

Oracle에서 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은 하나의 표 또는보기를 지원합니다. 그러나 업데이트 가능한보기를 사용하면 다중 테이블 삽입/업데이트를 수행 할 수 있습니다.

그러나 예제는 수행 할 수없는 다른 작업을 시도하는 것 같습니다. WHEN MATCHED 절은 UPDATE 할 항목을 지정합니다. 이 절에서 INSERT 할 수 없습니다. WHEN NOT MATCHED 절의 경우와 동일합니다.이 절에서 UPDATE 할 수는 없으며 INSERT 만 수정할 수 있습니다.

+0

"그러나 업데이트 가능한보기를 사용하면 다중 테이블 삽입/업데이트를 수행 할 수 있습니다." 거의. 나는 ([질문] (http://stackoverflow.com/questions/37690394)) 그것을 검색하고 그것은 지원되지 않는 것 같습니다. 하나의 전형적인 에러는 :'ORA-38106 : MERGE는 INSTEAD OF 트리거를 가진 결합 뷰 또는 뷰에서 지원되지 않습니다 .' –