자동으로 번호를 발생시켜주는 객체
정수의 연속된 수를 자동으로 순차적으로 발생시킨다.
CREATE SEQUENCE 시퀀스명
START WITH 시작숫자 -생략가능,처음 발생시킬 시작값 지정
INCREMENT BY 증가값 -생략가능,한번 시퀀스 증가할때 몇씩 증가할 것인지 설정
MAXVALUE 최대값 -생략가능,최대값 지정
MINVALUE 최소값 -생략가능,최소값 지정
CYCLE/NOCYCLE -생략가능,값의 순환 여부를 결정
CACHE 바이트크기/NOCACHE -생략가능, 캐시메모리 여부 지정 기본값 20BYTE
CACHE MEMORY ?
시퀀스로부터 미리 발생될 값들을 생성하여 저장해두는 공간
매번 호출할 때마다 새롭게 번호를 생성하는 것보다 캐시메모리에 미리 생성된 값들을 가져다 쓰면 훨씬 속도가 빠르다.
단, 접속이 끊기고 나서 재접속 후 기존에 생성된 값들은 날아가고 없다.
예시 :
300부터 시작해서, 5씩 증가하고, 최대값은 310, 끝나면 반복하지 않고, 캐시에 저장하지도 않는다.
CREATE SEQUENCE SEQ_EMPNO
START WITH 300
INCREMENT BY 5
MAXVALUE 310
NOCYCLE
NOCACHE;
현재 시퀀스의 값(마지막으로 발생된 NEXTVAL의 값을 의미한다.)
현재 시퀀스의 값을 증가시키고 그 증가된 시퀀스의 값
단, 시퀀스 생성 후 첫 NEXTVAL은 START WITH로 지정된 시작값으로 발생
그렇기 때문에 시퀀스 생성 후 첫 CURRVAL은 수행할 수 없다.
예시 :
SELECT SEQ_EMPNO.NEXTVAL FROM DUAL; --300
SELECT SEQ_EMPNO.CURRVAL FROM DUAL; --300
SELECT SEQ_EMPNO.NEXTVAL FROM DUAL; --305
SELECT SEQ_EMPNO.NEXTVAL FROM DUAL; --310
SELECT SEQ_EMPNO.CURRVAL FROM DUAL; --310
ALTER SEQUENCE 시퀀스명
INCREMENT BY 증가값
MAXVALUE 최대값
MINVALUE 최소값
CYCLE/NOCYCLE
CACHE 바이트크기/NOCACHE
'START WITH'는 변경 불가
'START WITH'를 변경하고 싶다면 시퀀스 삭제 후 재생성
예시 :
ALTER SEQUENCE SEQ_EMPNO
INCREMENT BY 10
MAXVALUE 400;
DROP SEQUENCE 시퀀스명;