오라클 시퀀스(ORACLE SEQUENCE)
14. 시퀀스(Sequence)
n 다중 사용자 환경에서 사용하는 숫자(일련번호) 자동 생성기.
n PK, UK 칼럼의 값을 유일하게 자동으로 생성하는 경우에도 사용된다.
n 트랜잭션 내에서 시퀀스가 생성되어 사용되다가 롤백 되는 경우에 다음 시퀀스 번호는 SKIP 될 수 있다.
n 테이블 또는 칼럼과는 독립적으로 생성, 삭제된다.
n CURRVAL : 시퀀스의 현재 값을 리턴
n NEXTVAL : 시퀀스를 증가시키고 next value를 리턴한다.
[형식]
CREATE SEQUENCE sequence_name
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
n INCREMENT BY n : 생성되는 Sequence번호의 간격을 정수 n으로 정의. 옵션이 생략되면 시퀀스는 1씩 증가한다.
n START WITH n : 첫 번째 Sequence 번호를 정의, 옵션이 생략되면 시퀀스는 1부터 시작한다.
n MAXVALUE n : Sequence의 최대값을 정의. NOMAXVALUE가 default이며 최대값은 10의 27승이다.
n MINVALUE n : 생성 가능한 Sequence의 최소값을 정의, 디폴트가 NOMINVALUE이며 최소값은 1이다.
n CACHE n : 서버가 메모리 캐시에 미리 생성해 놓는 시퀀스 개수. 기본 값은 20 이고 캐시하지 않으려면 NOCACHE 옵션을 사용하면 된다.
[시퀀스를 사용할 수 없는 예]
SQL> CREATE TABLE seq_tab ( a NUMBER DEFAULT s1.NEXTVAL);
(* Error 발생) ß Oracle12C 이상에서는 가능
SQL> SELECT DISTINCT s1.NEXTVAL FROM dual;
(* Error 발생)
SQL> SELECT SUM(salary) FROM s_emp GROUP BY s1.NEXTVAL;
(* Error 발생)
댓글 없음:
댓글 쓰기