create SEQUENCE 시퀀스명 INCREMENT BY 1 START WITH 1 NOCACHE;
이것이 내가 사용한 시퀀스의 일반적인 생성문이다 그런데 시퀀스를 0으로 초기화해야할 일이생겼고
구글링을 하였더니 해당시퀀스를 바로 0으로 변경하는 방법은없었다 대신
시퀀스의 증가값을 -(음수)로 변경하여 0으로 만든다
그이후 다시 증가값을 1로변경하여 다시 사용하는 방법을 쓴다는 것을 알았다
1) select 시퀀스명.nextVal from dual; -> 0으로 만들기위해 해당시퀀스의 값을 조회한다
(조회하는것만으로도 시퀀스의 값이 증가한다)
2) alter sequence MainBoard_SEQ increment by -현재시퀀싀의 값;
=>시퀀스의 증가값을 -현재값으로 변경후 1번 사용하여 값을0으로 바꿔줄것이다.
2-1) select 시퀀스명.nextVal from dual;
=> 해당 sql문을 한번더 사용하여 시퀀스의 값을 조회함과 동시에 0으로 바꿔주려고 하였다.
[ 여기서 생긴 문제점 ]
-ora-08004 라는 오류가 발생하였다
-이오류는 1미만의 값을 가질경우 발생하였고 1부터는 발생하지 않았는데 이럴경우 시퀀스의 초기값이 1이돼고
시퀀스를 통해 얻을수있는 가장 초기의값은 2가 되었다
-시퀀스를 적용할 테이블의 칼럼값은 1부터 증가해야했기에 문제가 되었다.
[ 원인 ]
해당 시퀀스는 0의 값을 가질수 없는 상태인데 시퀀스를 발동하면 설정한 범위밖의 값을 가지게돼 표현 불가능하다.
[ 해결 ]
기존 시퀀스를 삭제한후 MINVALUE 0의 조건을 추가해 다시 생성하였다 그결과 오류없이 문제를 해결 할수 있었다
[ 배운점 ]
- 시퀀스 생성시 최소값의 기본값은 1이라는것을 알수있었다
- MINVALUE의 속성에대해 알수있었다