IT 관련 정리

[오라클 디비 프라이머리 키 Primary Key 중복]무결성 제약 조건 위배 해결방법 시퀀스 조회 및 수정

YK1213 2023. 4. 5. 19:17
반응형
오라클 데이터베이스에서 아래 오류가 뜨는 것을 해결해보자.

무결성 제약 조건에 위배됩니다

원인 : 테이블에서 데이터 INSERT시 자동으로 생성되는 프라이머리 키 값의 중복으로 발생하는 문제이다.

보통 자동으로 생성되는 값은 시퀀스를 사용해서 INSERT 시키는데, 

시퀀스 테이블의 현재 순서의 값이 이미 디비에 존재해서 발생하는 문제이다.

 

아래 순서대로 해결해보자.

 

1. 해당 테이블에서 사용하는 시퀀스 명 조회

FROM *
SELECT ALL_SEQUENCE
WHERE SEQUENCE_NAME LIKE '%테이블 명%';
 

2. 현재 값 확인

찾은 시퀀스에서 현재 값을 확인한다.

 

SELECT 시퀀스명.CURRVAL FROM DUAL;

 

3. 시퀀스 순서를 현재 디비에 INSERT 돼 있는 값보다 큰 값으로 늘리기

현재 테이블에 INSERT 돼 있는 값 중 가장 큰 값에서, 현재 시퀀스 값을 찾아서 빼준다.

그리고 그 차이 값을 시퀀스가 증가하는 값으로 세팅한다.

 

차이 = 디비 값 중 가장 큰 값 - 시퀀스 현재 순서 +1

ALTER SEQUENCE SEQ_X INCREMENT BY 차이;

 

시퀀스를 조회해서 디비 값 보다 큰 값으로 세팅한다.

SELECT 시퀀스명.NEXTVAL FROM DUAL;

 

4. 원래대로 세팅

시퀀스 증가 값을 1로 다시 세팅한다.

 

ALTER SEQUENCE SEQ_X INCREMENT BY 1;

 

5. 데이터 INSERT로 정상 동작 확인

 

끝!

 

참고 블로그: https://hye0-log.tistory.com/5

반응형