오늘 하루에 집중하자
  • [Oracle] MERGE 문의 이해 및 활용
    2024년 07월 25일 22시 16분 08초에 업로드 된 글입니다.
    작성자: nickhealthy
    • MERGE 문은 조건에 따라서 데이터의 삽입, 갱신, 삭제 작업을 한번에 할 수 있다.
    • 해당 행이 존재하는 경우 UPDATE 또는 DELETE를 수행하고, 새로운 행일 경우 INSERT를 수행한다.
    • 대상 테이블에 대한 UPDATE/INSERT 조건은 ON 절에 의해 결정된다.
    • MERGE 문에서 CLOB 사용시 업데이트 할 내용이 2000bytes가 넘을 때 ORA-00600 오류가 발생하며, 

     

    MERGE Syntax

    • INTO: DATA가 UPDATE 되거나 INSERT 될 테이블 또는 뷰를 지정
    • USING: 비교할 SOURCE 테이블 또는 뷰나 서브쿼리를 지정, INTO 절의 테이블과 동일하거나 다를 수 있다.
    • ON: UPDATE나 INSERT를 하게 될 조건으로, 해당 조건을 만족하는 DATA가 있으면 WHEN MATCHED 절을 실행하게 되고, 없으면 WHEN NOT MATCHED 이하를 실행하게 된다.
    • WHEN MATCHED: ON 조건절이 TRUE인 ROW에 수행할 내용(UPDATE, DELETE가 포함될 수 있음)
    • WHEN NOT MATCHED: ON 조건절에 맞는 ROW가 없을 때 수행할 내용(INSERT)
    MERGE [ hint ]
       INTO [ schema. ] { table | view } [ t_alias ]
       USING { [ schema. ] { table | view }
             | subquery 
             } [ t_alias ]
       ON ( condition )
    WHEN MATCHED THEN
    UPDATE SET column = { expr | DEFAULT }
               [, column = { expr | DEFAULT } ]...
    [ DELETE where_clause ]
    WHEN NOT MATCHED THEN
    INSERT [ (column [, column ]...) ]
    VALUES ({ expr [, expr ]... | DEFAULT })

     

    댓글