카테고리 없음

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

미조미 2021. 6. 3. 13:57

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

 

 

원인: MERGE INTO 문 사용시 중복 데이터로 인한 에러
MERGE INTO TABLE_A
USING TABLE (or VIEW or Subquery) B
ON COLA=COLB
WHEN MATCHED THEN UPDATE (or INSERT or DELETE)
WHEN NOT MATCHED THEN INSERT (or UPDATE or DELETE)
여기서 USING절 쿼리에 PK 중복값이 2개 이상인 경우 에러 발생



해결법: 중복 데이터 찾아서 해당 데이터 보정 or ON절에 조건 추가
1.중복 데이터 찾는 경우
SELECT COLB, COUNT(*)
FRO TABLE B
GROUP BY COLB
HAVING COUNT(*) > 1
위 쿼리로 중복 데이터 확인 후 데이터 보정

2.ON절에 조건 추가
MERGE INTO TABLE_A
USING TABLE (or VIEW or Subquery) B
ON A.COLA=B.COLB
AND A.COLC=B.COLD
WHEN MATCHED THEN UPDATE (or INSERT or DELETE)
WHEN NOT MATCHED THEN INSERT (or UPDATE or DELETE)