Oracle : 시퀀스 (Sequence)

– 유일(UNIQUE)한 값을 생성해주는 오라클 객체
– 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할 수 있다.
– 시퀀스는 테이블과 독립적으로 저장되고 생성된다. 따라서 하나의 시퀀스를 여러 테이블에서 사용할 수 있다.

시퀀스 생성 문법[Syntax]
CREATE SEQUENCE sequence_name
[START WITH n] — n은 시퀀스 시작 값 지정
[INCREMENT BY n] — n은 시퀀스 증가 값 지정
[MAXVALUE n | NOMAXVALUE] — 시퀀스 최대값, NOMAXVALUE는 무한대
[MINVALUE n | NOMINVALUE] — 시퀀스 최소값, NOMINVALUE는 무한대
[CYCLE | NOCYCLE]

시퀀스 생성/사용 예제
SQL>CREATE SEQUENCE emp_seq
START WITH 1
INCREMENT BY 1
MAXVALUE 100000;

sequence created.

— 시작값이 1이고 1씩 증가하고, 최대값이 100,000이 되는 시퀀스를 생성했습니다.

SQL>INSERT INTO emp(empno, ename, hiredate) VALUE(emp_seq.NEXTVAL, ‘David’, sysdate);

— empno는 컬럼값을 입력할 때 다음 값을 기억하지 않아도 NEXTVAL을 사용하여 자동으로 입력이 된다.
— CURRVAL : 현재값 반환 NEXTVAL : 현재 시퀀스 값의 다음값 반환

SQL>SELECT emp_seq.CURRVAL FROM DUAL;

CURRVAL
—————-
1

SQL>SELECT emp_seq.NEXTVAL FROM DUAL;
NEXTVAL
—————–
2

시퀀스 수정/삭제 문법[Syntax]
ALTER SEQUENCE sequence_name — START WITH는 수정할 수 없다.
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]

시퀀스 수정/삭제 예제
SQL>ALTER SEQUENCE emp_seq
INCREMENT BY 2
CYCLE;

sequence altered.

— 2씩 증가하고, 최대값을 넘으면 다시 처음으로 순환하도록 수정

SQL>DROP SEQUENCE emp_seq

sequence dropped.

출처 : http://weblogic.tistory.com/52

Leave a Reply

Your email address will not be published.