MERGE INTO 구문

기존의 오라클 UPDATE JOIN VIEW 기능으로, 2개의 테이블을 조인하여 데이터를 업데이트하거나 새로 추가해 준다.

-- 참조 URL : https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF01606
-- 보너스 테이블에 직원ID를 조회하여 존재하면 기존연봉의 0.01 를 보너스로 업데이트하고
-- 직원ID가 존재하지 않으면, 새로추가한다.
MERGE INTO BONUSES D
     USING (
               SELECT EMPLOYEE_ID
                    , SALARY
                    , DEPARTMENT_ID
                 FROM EMPLOYEES
                WHERE DEPARTMENT_ID = 80
           ) S
        ON (D.EMPLOYEE_ID = S.EMPLOYEE_ID)
WHEN MATCHED THEN
    UPDATE SET D.BONUS   = D.BONUS + S.SALARY * .01
    DELETE
             WHERE (S.SALARY > 8000)
WHEN NOT MATCHED THEN
    INSERT     (
                D.EMPLOYEE_ID
              , D.BONUS
               )
        VALUES (
                S.EMPLOYEE_ID
              , S.SALARY * .01
               )
         WHERE (S.SALARY <= 8000);

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다