SEQUENCE
시퀀스(SEQUENCE) 란?
오라클 시퀀스란 유일한 값을 생성해 주는 오라클 객체이다.
기본키와 같이 순차적으로 증가 하는 컬럼을 자동적으로 생성할 수 있으며, 주로 PRIMARY KEY값을 생성하기 위해 사용한다.
시퀀스는 테이블과는 독립적으로 저장, 생성되며 메모리에 Cache되었을 때 시퀀스 값의 액세스 효율이 증가한다
시퀀스 생성
CREATE SEQUENCE sequence_name
[START WITH n]
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE]
[ORDER | NOORDER]
- START WITH : 시퀀스의 시작 값을 지정한다. n을 1로 지정하면 1부터 순차적으로 시퀀스 번호가 증가한다.
- INCREMENT BY : 시퀀스의 증가 값을 지정한다. n을 2로 지정하면 2씩 증가한다.
- MAXVALUE : 시퀀스 최대값
- MINVALUE : 시퀀스 최소값
- CYCLE | NOCYCLE : 최대값 도달시 순환 여부
- CACHE | NOCACHE : 메모리에 시퀀스 값을 미리 할당할지 여부
- ORDER | NOORDER : 반드시 순차적으로 모두 채워서 시퀀스를 사용하거나 건너뛸 수 있을지 여부
시퀀스 수정
ALTER SEQUENCE sequence_name
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE]
[ORDER | NOORDER]
시퀀스가 사용되는 경우
- SELECT문의 SELECT 절 (단, SUBQUERY, VIEW가 아닌)
- INSERT 문의 SELECT 절
- INSERT 문의 VALUES 절
- UPDATE문의 SET 절
시퀀스가 제한되는 경우
- SELECT, DELETE, UPDATE 에서의 서브쿼리
- VIEW의 QUERY구문
- DISTINCT 가 있는 SELECT 문
- GROUP BY, ORDER BY 가 있는 SELECT 문
- SET 연산자(UNION, INTERSECT, MINUS)가 있는 SELECT 문
- SELECT 문의 WHERE절
- CREATE / ALTER TABLE 에서 컬럼의 DEFAULT 값
- CHECK 제약조건