본문
ORA-02289: 시퀀스가 존재하지 않습니다.
DB(Oracle) 2017. 2. 3. 11:57
반응형
# ORA-02289: 시퀀스가 존재하지 않습니다.
필자는 테이블 생성 시, @SequenceGenerator 어노테이션 선언을 해놓고 Sequence를 생성하지 않아 위와같은 에러가 발생했었다. 시퀀스는 유일한 값을 생성해주는 오라클 객체로 보통 primary key로 사용할 수 있는 순차적으로 증가하는 숫자 컬럼을 생성할 때 사용한다.
1. 생성되어있는 시퀀스 확인하기
1 | SELECT * FROM USER_SEQUENCES; | cs |
ex) 조회 결과
2. Default 시퀀스 생성하기
1 | CREATE SEQUENCE 시퀀스이름; | cs |
ex) 1 | SELECT * FROM USER_SEQUENCES WHERE SEQUENCE_NAME='SEQ_STS_TOKEN_LOG'; |
3. 시퀀스 생성하기
1 2 3 4 5 6 7 | CREATE SEQUENCE 시퀀스이름 INCREMENT BY 숫자 START WITH 숫자 MAXVALUE 숫자 or NOMAXVALUE MINVALUE 숫자 or NOMINVALUE CYCLE or NOCYCLE CACHE or NOCACHE; | cs |
ex) 사용예시
1 2 3 4 5 6 7 | CREATE SEQUENCE SEQ_STS_TOKEN_LOG INCREMENT BY 1 START WITH 1 MAXVALUE 9999999999999999999999999999 MINVALUE 1 NOCYCLE --CYCLE_FLAG CACHE 20; --CACHE_SIZE |
- INCREMENT BY 숫자 : 증가값 (default 1)
- START WITH 숫자 : 시작값 (default 1)
- MAXVALUE 숫자 or NOMAXVALUE : 최고값 (nomaxvalue default 10*E27)
- MINVALUE 숫자 or NOMINVALUE : 최소값 (nominvalue default 1)
- CYCLE or NOCYCLE : 최소,최고값이후 값의 생성유무 (default nocycle)
- CACHE or NOCACHE : 메모리에 유지할 값의 수 (default 20)
4. 시퀀스 수정하기
start with 는 수정할 수 없음, start with를 제외하고 시퀀스 생성시 사용하는 옵션 모두 사용가능
SQL>ALTER SEQUENCE 시퀀스명 INCREMENT BY 2;
5. 시퀀스 삭제하기
SQL>DROP SEQUENCE 시퀀스명;
→ 참고:
반응형
댓글