ORACLE 데이터베이스를 사용하다보면 MERGE INTO 명령어가 유용할 때가 있다. INSERT, UPDATE를 한방에 해주니까.

그런데 가끔 오류가 발생한다.

 

ORA-30926: unable to get a stable set of rows in the source tables

 

MERGE INTO 문법을 보면

 

MERGE INTO employees e 
USING hr_records h 
ON (e.id = h.emp_id) 
WHEN MATCHED THEN UPDATE SET e.address = h.address 
WHEN NOT MATCHED THEN INSERT (id, address) VALUES (h.emp_id, h.address)

여기서 중요한게 USING에서 사용되고 있는 테이블의 ON 조건 컬럼의 값이 UNIQUE해야 한다.

중복된 자료가 있으면 위와 같은 오류가 발생함.

그래서 오류가 발생했다면 USING 테이블의 컬럼으로 GROUP BY 해서 사용하면 됨.

728x90

+ Recent posts