oracle 일 경우 update , merge 둘 다 가능

 

UPDATE 문

 

-- TB_TEST1가 100건 , TB_TEST2 30건일 경우 30건만 UPDATE 수행 됩니다.

-- 하지만 WHERE 을 생략할 경우 100건  모두 UPDATE ( 당연한 얘기같지만 혹시나 해서요..)

UPDATE  TB_TEST1 A

     SET (COL3, COL4 ) = ( SELECT COL3, COL4

                                  FROM TB_TEST2 

                                 WHERE COL1 = A.COL1 AND COL2 = A.COL2 )

WHERE EXISTS

(SELECT 1

 FROM TB_TEST2

WHERE COL1 = A.COL1 AND COL2 = A.COL2);

 

MERGE 문

 

-- MERGE는 INSERT를 같이 할 수 있는 장점도 있습니다.

-- ON 조건에 만족하지 않으면 INSERT 할 때는 아래 주석을 푸시면 됩니다.

MERGE INTO TB_TEST1 A

USING TB_TEST2 B

ON ( A.COL1 = B.COL1 AND A.COL2 = B.COL2 )

WHERE MATCHED THEN

UPDATE SET A.COL3= B.COL3, A.COL4=B.COL4

-- WHERE NOT MATCHED THEN 

-- INSERT (A.COL1, A.COL2, A.COL3, A.COL4)

-- VALUES (B.COL1, B.COL2, B.COL3, B.COL4)                   

 

-- ** oracle 10g까지만 update 할 때 /*+ bypass_ujvc */ 가능

 

 

 

 

 

'oracle' 카테고리의 다른 글

DBMS_XPLAN 튜닝 주로 사용하는 스크립트  (0) 2020.04.01
DBMS_XPLAN ORACLE PLAN 오라클 실제 플랜  (0) 2019.12.17
job 프로시저 수행  (0) 2017.09.27
테이블생성 프로시저  (126) 2017.09.27

+ Recent posts