Season 1 아카이브/프로그래밍
                
              /*+ bypass_ujvc */ 를 이용한 오라클 다중행 업데이트 쿼리
                문장전달자
                 2014. 3. 22. 18:12
              
              
                    
        728x90
    
    
  2개 이상의 테이블을 조인하여 table1의 특정 컬럼을 table2 의 특정 컬럼의 값으로 업데이트는 아래와 같은 형식을 취한다.
[일반적인 업데이트의 경우]
UPDATE table
SET A = 'F'
WHERE B = 'T'
[다중행 업데이트의 경우]
UPDATE /*+ bypass_ujvc */
( 조인된 select 쿼리가 위치하는 곳 )
SET A = A'
아래 예제는 table2 의 id 별로 end_date 컬럼의 max 값을 찾아 비어져있는 table1 의 end_dt 컬럼에 업데이트하는 경우이다.
[예제]
UPDATE /*+ bypass_ujvc */
| 
   (SELECT a.end_dt end1, REPLACE(b.end_date, '-', '')  end2 AND a.end_dt is null   AND b.end_date > '2014-03-22'  | 
SET end1 = end2
728x90