상세 컨텐츠

본문 제목

ORA-30926 (원본 테이블의 고정 행 집합을 가져올 수 없습니다)

DB/Oracle

by husks 2016. 3. 2. 12:16

본문

반응형


ORA-30926: 원본 테이블의 고정 행 집합을 가져올 수 없습니다


라는 에러가 발생했습니다.


저 같은 경우는 MERGE INTO 실행 시 발생한 에러 입니다.


MERGE INTO TABLE_A A

          USING TABLE_B B

            ON (A.BOOK_ID = B.BOOK_ID)

          WHEN MATCHED

          THEN

            UPDATE

              SET

                PRICE = B.PRICE, --같은 북아이디가 있다면 가격을 업데이트한다.

                UPD_DT = SYSDATE,

                UPD_ID = 'husk'

          WHEN NOT MATCHED

          THEN

            INSERT ( --없다면 입력을 한다.

              BOOK_ID,

              PRICE,

              CRT_DT,

              CRT_ID

            ) VALUES (

              B.BOOK_ID,

              B.PRICE,

              SYSDATE,

              'husk'

            );


위에서 붉은색으로 표시한 부분이 join을 위한 조건입니다.


해당 조건으로 2개 이상의 값이 나올때 발생하는 에러 입니다.


2개의 값이 나온다면 업데이트 할 때 어떠한 값에 업데이트를 하기 어려워 발생하는 오류 입니다.


SELECT

  BOOK_ID,

  COUNT(*)

FROM

  TABLE_A --또는 TABLE_B

GROUP BY BOOK_ID

HAVING COUNT(*) > 1;


위의 쿼리를 실행하면 중복되는 값을 확인하실 수 있습니다.


(테이블에서 북아이디가 2개 이상인 아이디를 추출하는 쿼리)


1개의 값만 나오도록 중복을 제거해 주세요.


반응형

'DB > Oracle' 카테고리의 다른 글

오라클 형변환 함수  (0) 2016.06.23
오라클 중복 데이터 찾기  (0) 2016.03.03
오라클 테이블명 변경  (0) 2016.01.27
오라클 컬럼 길이 및 바이트 확인  (0) 2016.01.07
ORACLE (CASE, SUBSTR)  (0) 2015.11.25

관련글 더보기

댓글 영역