CREATE SEQUENCE OWNER.Q_REVIEW_NO_SEQ
MINVALUE 1
MAXVALUE 9999999999
START WITH 1
INCREMENT BY 1
CACHE 20
NOCYCLE
ORDER
MINVALUE : 시퀀스 최소값
MAXVALUE : 시퀀스 최대값
START WITH : 시퀀스 시작값, MINVALUE보다 크거나 같아야 함
INCREMENT BY : 시퀀스 실행 시 증가값
CACHE : 캐시를 사용하여 시퀀스 값을 미리 Library Cache에 할당해 놓아 속도가 빠르며 DB I/O를 줄임
동시 사용자가 많을 경우 유리
하지만, DB를 중도 OFF하면 Library Cache 에 저장되어있느 시퀀스가 휘발되어 시퀀스 공백이 생길 수 있음.
예를 들어, CACHE 20 => 시퀀스 65까지 생성시 1~20 + 21~40 + 41~60 + 61~65 DB I/O가 4번만 발생. 이 때, 21~40 생성 시 DB OFF하면 21~40 시퀀스 공백이 생길 수 있음
NOCACHE : 캐시 미사용
CYCLE : 시퀀스의 MAXVALUE 도달 시 MINVALUE 부터 다시 시작
NOCYCLE (Default) : 반복안함. DB PK 컬럼에 시퀀스 적용 시 NOCYCLE 지향
ORDER : 병렬서버를 사용할 경우 요청 순서에 따라 정확하게 시퀀스를 생성하기를 원할 때 사용.
단일서버일 경우 ORDER 옵션과 관계 없이 정확히 요청 순서에 따라 시퀀스가 생성됨
요청 순서로 값을 생성하여 발생 순서를 보장하지만 조금의 시스템 부하가 있음.
NOORDER (Default) : 사용안함.
SELECT OWNER.Q_REVIEW_NO_SEQ.NEXTVAL AS reviewNo
FROM DUAL
MySQL은 auto_increment 라는 컬럼 키워드가 있음. Oracle에서는 그동안 시퀀스를 생성하여 사용하였으나 12.1 버전부터 generated as identity 라는 컬럼 키워드가 생김
CREATE TABLE TEMP_AUTO (
id NUMBER generated as identity,
text VARCHAR2(10)
);