본문 바로가기
Programming/SQL, NoSQL

[ORACLE] Sequence 값 수정하기

by 째스터 2018. 12. 3.
728x90

소스코드 성능 확인을 위해 Insert문으로 데이터를 대량으로 바로 DB에 넣었습니다.

그리고 다시 제품 상에서 테스트를 하면서 데이터를 추가하는 순간 아래 에러가 발생했습니다.

ORA-00001: Unique Constraint violated 

앞서 한꺼번에 Insert했던 데이터의 key 값과 Sequence 현재 값과 중복되어 에러가 발생했습니다.

 

예를 들어, Sequence의 nextval이 13인 상태, key가 1 ~ 12 데이터가 들어있는 테이블에

수동으로 3개의 데이터를 넣어주면, key가 1 ~ 15 인 데이터가 들어있는 테이블이 됩니다.

이때 코드에서 Sequence의 nextval로 key가 13인 데이터를 Insert하게 되면 이미 key가 13인 데이터가 존재하므로 에러가 발생합니다.

 

따라서 Sequence 현재 값을 15로 맞춰 주어야 했습니다.

정석은 DROP SEQUENCE 후 다시 CREATE SEQUENCE 하는 것이라고 합니다...

하지만, 저는 퇴근 시간이 가까워져서(?) 편법을 사용했습니다.

 

1. 시퀀스 증가값을 원하는 값으로 바꾼 후

ALTER SEQUENCE [시퀀스 이름] INCREMENT BY 3 --NEXTVAL : 13
 

2. 증가값 3을 증가 시켜준 다음

SELECT [시퀀스 이름].NEXTVAL FROM DUAL --NEXTVAL : 16
 

3. 다시 1로 바꿨습니다.

ALTER SEQUENCE [시퀀스 이름] INCREMENT BY 1 --NEXTVAL : 16

사실 저는 쫄보라서 증가값이 1로 제대로 바뀌는지 확인합니다...

1번 단계에서 1만큼 덜 증가시켜주고 3번이 끝난 후 다시 2번 과정을 거쳐서 확인할 수 있습니다.

돌다리도 두드리고 건넙시다.

728x90

댓글