오라클 시퀀스(Oracle Sequence) 사용
1. sequence 생성
1-1. Syntax
create_sequence::=
CREATE SEQUENCE [ schema. ] sequence
[ { INCREMENT BY | START WITH } integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| { ORDER | NOORDER }
]... ;
1-2. sequence 생성하는 예제입니다.
다음과 같이 DDL을 사용하면
CREATE SEQUENCE test_seq1;
Oracle DBMS가 다음과 같이 변경하여 생성합니다.
CREATE SEQUENCE test_seq1
START WITH 1 -- 시작값
MAXVALUE 9999999999999999999999999999 -- 최대값 지정 또는 NOMAXVALUE를 사용하여 무한으로 셋팅
MINVALUE 1 -- 최소값 지정 또는 NOMINVALUE를 사용하여 무한으로 셋팅
NOCYCLE -- 최대 또는 최소값에 도달 한 후 추가로 값을 생성 할 수 있음 순환을 하게 하려면 CYCLE 사용
CACHE 20 -- 2~28의 값을 가지며 공식은 (CEIL (MAXVALUE - MINVALUE)) / ABS (INCREMENT)
NOORDER;
2. sequence 수정
2-1. Syntax
alter_sequence::=
ALTER SEQUENCE [ schema. ] sequence
{ INCREMENT BY integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| { ORDER | NOORDER }
} ...
;
2-2 sequence 수정 예제
최대 값을 1500으로 변경
ALTER SEQUENCE test_seq1
MAXVALUE 1500;
sequence 번호가 순환 되게 하고(최대값이 되면 시작값으로 되돌아감) cache를 5로 변경
ALTER SEQUENCE test_seq1
CYCLE
CACHE 5;
3. sequence 삭제
3-1. Syntax
drop_sequence::=
DROP SEQUENCE [ schema. ] sequence_name ;
3-2. sequence 삭제 예제
DROP SEQUENCE test_seq1;
[출처] 오라클 시퀀스(Oracle Sequence) 사용|작성자 강철고양이