티스토리 뷰

디비를 사용 하다 보면 로그등을 남기기 위해 중복되지 않는 숫자가 필요한 경우가 있습니다. 이런 경우 사용 하게 되는 것이 바로 시퀀스(SEQUENCE)입니다. 시퀀스를 사용 하면 별도로 값을 관리 하지 않아도 DB에서 알아서 관리 해 줍니다. 이번 포스팅에서는 이 시퀀스에 대해서 알아보도록 하겠습니다.


* Sequence 구문


CREATE SEQUENCE sequence_name 
       [START WITH n]
       [INCREMENT BY n]
       [MAXVALUE n | NOMAXVALUE]
       [MINVALUE | NOMINVALUE]
       [CYCLE | NOCYCLE]


* START WITH
시퀀스의 시작 값을 지정합니다. n을 1로 지정하면 1부터 순차적으로 시퀀스번호가 증가 합니다.


* INCREMENT BY
시퀀스의 증가 값을 말합니다. n을 2로 하면 2씩 증가합니다. 
START WITH를 1로 하고 INCREMENT BY를 2으로 하면 1, 3, 5,7,..
이렇게 시퀀스  번호가 증가하게 됩니다.


* MAXVALUE n | NOMAXVALUE 
MAXVALUE는 시퀀스가 증가할수 있는 최대값을 말합니다. 
NOMAXVALUE는 시퀀스의 값을 무한대로 지정합니다.


* MINVALUE n  | NOMINVALUE
MINVALUE는 시퀀스의 최소값을 지정 합니다. 
기본값은 1이며, NOMINVALUE를 지정할 경우 최소값은 무한대가 됩니다 



1.시퀀스 생성


1
CREATE SEQUENCE 대상컬럼명_SEQ INCREMENT BY 1 START WITH 1;
cs



2.시퀀스 수정

START WITH 값을 제외하고 ALTER SEQUENCE 명령어로 수정 할 수 있습니다.


1
2
3
4
5
6
7
-- 시퀀스 수정 Syntax
ALTER SEQUENCE sequence_name
    [INCREMENT BY n]
    [MAXVALUE n | NOMAXVALUE]
    [MINVALUE n | NOMINVALUE]
    [CYCLE | NOCYCLE]
    [CACHE | NOCACHE]
cs



3.시퀀스 삭제

DROP SEQUENCE 명령으로 시퀀스를 삭제 할 수 있다. 


1
2
3
-- 대상컬럼명_SEQ 시퀀스를 삭제한다.
DROP SEQUENCE 대상컬럼명_SEQ;
 
cs


4.사용 방법


데이터를 insert할때 해당 시퀀스 뒤에 nextval을 추가하여 insert를 하면 현재 사용 중인 시퀀스의 다음값을 insert 할 수 있습니다.

1
INSERT INTO 테이블명 (대상컬럼명, 컬럼명1, 컬럼명2, …) VALUES (대상컬럼명_SEQ.NEXTVAL, 컬럼값1, 컬럼값2, …);
cs

현재 시퀀스의 다음값을 볼 수 있습니다.

1
SELECT 시퀸스_이름.NEXTVAL FROM DUAL;
cs

현재의 시퀀스 값을 볼 수 있습니다.
1
SELECT 시퀀스_이름.CURRVAL FROM DUAL;
cs





댓글