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.