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
반응형