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 () 에서 산출되는 결과가 중복된 값이 없으면 된다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기