반응형
오라클 데이터베이스에서 아래 오류가 뜨는 것을 해결해보자.
무결성 제약 조건에 위배됩니다
원인 : 테이블에서 데이터 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
반응형
'IT 관련 정리' 카테고리의 다른 글
VPN 우회 용 Express VPN 1개월 사용 전 환불 받는 방법 (0) | 2023.12.02 |
---|---|
마리아디비 데이터 insert 시 Primary Key 중복 관련 대소문자 구분 설정 방법 (0) | 2023.07.06 |
포스트맨 요청 여러개 새 탭에서 열기 (1) | 2023.01.19 |
[JAVA 크롬에서 안 깨지는 mht파일 생성] html 파일 mht 파일로 변환, mht 파일 내부 이미지 저장 방법 (0) | 2022.12.24 |
[Spring Rest API 호출 방법] 서버 to 서버 파일 다운로드 RestTemplate 헤더 추가 및 예시 코드 (0) | 2022.12.23 |