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개의 값만 나오도록 중복을 제거해 주세요.
오라클 형변환 함수 (0) | 2016.06.23 |
---|---|
오라클 중복 데이터 찾기 (0) | 2016.03.03 |
오라클 테이블명 변경 (0) | 2016.01.27 |
오라클 컬럼 길이 및 바이트 확인 (0) | 2016.01.07 |
ORACLE (CASE, SUBSTR) (0) | 2015.11.25 |
댓글 영역