Merge 문을 사용할 때 ORA-30926 의 오류가 발생할 때가 있다.
ORA-30926 : unable to get a stable set of rows in the source tables
(원본 테이블의 고정 행 집합을 가져올 수 없습니다.)
Merge 구문
MERGE INTO 테이블명 Alias
USING [TABLE | View | subquery] alias
ON 조건
WHEN MATCHED THEN
UPDATE SET 컬럼1=값1,
컬럼2=값2...
WHEN NOT MATCHED THEN
INSERT (컬럼1,컬럼2,...)
VALUES(값1,값2,...);
이렇게 Merge문을 사용하여 INSERT 또는 UPDATE 할 때 1개의 레코드를 대상으로 작업이 가능하다.
하지만 SELECT의 결과가 2개 이상이 리턴되었기 때문에 오류가 발생하였다.
1. INSERT 구문에서 중복이 발생하거나 UPDATE 에 MULTI ROW가 UPDATE되는 경우 오류
2. ON 구문에서 UPDATE되는 ROW가 1개 이상일 경우 오류
방법은 ON(Join 조건)에 의해 USING () 에서 산출되는 결과가 중복된 값이 없으면 된다.