시퀀스(Sequence)
란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체로 보통 PK값에 중복을 방지하기 위해 사용된다. 예를 들면, 사번의 번호가 20210041 로 주어진다고 했을 때 다음에 입사하는 사원의 번호는 20210042나 20210043과 같은 번호가 되어야 한다. 이러한 어떤 특정 컬럼을 순차적으로 증가 혹은 감소시켜 주는 것을 시퀀스
로 할 수 있다.
먼저, 시퀀스는 DDL
문이므로 테이블을 정의할 때 하는 것과 같이 CREATE, ALTER, DROP을 사용하면 된다.
-- 시퀀스 생성
CREATE SEQUENCE [시퀀스명]
INCREMENT BY [증감숫자]
START WITH [시작숫자]
NOMINVALUE OR MINVALUE [최솟값]
NOMAXVALUE OR MAXVALUE [최댓값]
CYCLE OR NOCYCLE
CACHE OR NOCACHE
ORDER OR NOORDER
KEEP OR NOKEEP
SESSION OR GLOBAL
INCREMENT BY [증감숫자] : 증감 숫자가 양수면 증가 음수면 감소 (디폴트 1)
START WITH [시작숫자] : 시작 숫자의 디폴트 값은 증가일 때 MINVALUE 감소일 때 MAXVALUE
NOMINVALUE : 디폴트값 설정, 증가일 때 1, 감소일 때 -1028
MINVALUE : 최솟값 설정, 시작숫자와 작거나 같아야 하고 MAXVALUE 보다 작아야 함
NOMAXVALUE : 디폴트값 설정, 증가일 때 1027, 감소일 때 -1
MAXVALUE : 최대값 설정, 시작숫자와 같거나 커야하고 MINVALUE보다 커야함
CYCLE OR NOCYCLE : CYCLE 설정시 최대값에 도달하면 최소값부터 다시 시작 NOCYCLE 설정시 최대값 생성 시 시퀀스 생성중지
CACHE OR NOCACHE : CACHE 설정시 메모리에 시퀀스 값을 미리 할당하고 NOCACHE 설정시 시퀀스값을 메로리에 할당하지 않음
ORDER OR NOORDER : ORDER 설정시 반드시 순차적으로 모두 채워서 시퀀스를 사용하고 NOORDER 설정시 시퀀스 값을 건너뛸 수 있음
KEEP OR NOKEEP : 프로그램 테스트 혹은 성능 시험을 하는 동안 현재값 보호 여부
SESSION OR GLOBAL : 세션을 기준으로 각각 시퀀스 번호가 생성 GLOBAL은 여러 사용자가 사용 가능
시퀀스를 수정하는 방법은 테이블을 변경하는 것 처럼 ALTER
를 사용하면 된다. 하지만 INCREMENT BY
는 수정이 불가능하다.
-- 시퀀스 생성
ALTER SEQUENCE [시퀀스명]
INCREMENT BY [증감숫자]
NOMINVALUE OR MINVALUE [최솟값]
NOMAXVALUE OR MAXVALUE [최댓값]
CYCLE OR NOCYCLE
CACHE OR NOCACHE
ORDER OR NOORDER
KEEP OR NOKEEP
SESSION OR GLOBAL
DROP SEQUENCE [시퀀스명]