merge 문을 사용 할 때 

on절에 온 Unique 컬럼을 update 인자로 쓸 수 없다.


하지만 그 unique 컬럼을 merge 문으로 사용하기 위해 아래와 같이 

rowid 로 join을 걸어 해당 unique 컬럼을 update 로 사용 할 수 있다.




SELECT e.empno, e.ename

  FROM emp e INNER JOIN dept d ON e.deptno = d.deptno




SELECT a.empno, a.ename

  FROM emp a,

       (SELECT b.*, aa.ROWID rid

          FROM dept b, emp aa

         WHERE b.deptno = aa.deptno(+)) c

 WHERE a.ROWID = c.rid




아 참고로 Merge 문의 on 절에 오는 a.coulmn = b.column 들은

unique 값이 어야 한다.


unique 값이 아니라면 distinct 나 group by 하여 1:1 매칭이 되게 하여야 merge 문 에러가 나지 않는다.



+ Recent posts