티스토리 뷰

Sequence - 시퀀스 생성(CREATE SEQUENCE)


시퀀스(Sequence)

- 자동으로 고유한 번호를 생성해주는 번호 생성기같은 Object

- 자동으로 번호를 변환

- 겹쳐지는 번호 지정 없다. → 제약 조건 위배

- ex) 회사 사원(부서) 마지막 번호가 기억 안날 때 → 일일이 검색하거나 기억하지 않아도 된다.


문법


1
2
3
4
5
6
7
CREATE SEQUENCE sequence
    [ INCREMENT BY n ]
    [ START WITH n ]
    [ { MAXVALUE n | NOMAXVALUE } ]
    [ { MINVALUE n | NOMINVALUE } ]
    [ { CYCLE | NOCYCLE } ]
    [ { CACHE n | NOCACHE } ];
cs



순서 정해져 있지않다. → 없다

Object명 지을 때는 문자로 시작

문자, 숫자, 특수문자( _ # $ ) 혼합 가능

30Byte 넘으면 안 됨

같은 유저끼리는 이름 겹치면 안됨


INCREMENT

- 시퀀스 번호 사이의 간격 지정

- DEFAULT = 1

- 1씩 증가하는 것이 기본 / -1로 하면 1씩 감소


START

- 시퀀스 번호의 시작값 지정

- DEFAULT = 1

- START WITH 100 → 100번부터 시작


MAXVALUE

- MAXVALUE 1000 → 1000까지 증가

- 시스템에 정의되어 있는 최대값. 10의 27승


NOMAXVALUE

- 디폴트 값


MINVALUE

- MINVALUE 1000 → 1000까지 감소

- 시스템에 정의되어있는 최소값. -10의 26승


NOMINVALUE

- 디폴트 값


CYCLE

- 최대, 최소값에 도달한 경우 기본값부터 다시 시작한다


NOCYCLE

- 권장. 실수 안 할려고. PK, UK에 많이 쓰인다.

- 제약조건 위배하면 안 된다

- 순환하지 않는다

- 더 이상 값을 반환하지 않는다


CACHE

- 호출할 때마다 미리 만들어져있으니까 빨리 반환가능

- 다 써야지 캐시메모리에 새롭게 넣어놓는다

- 성능상 캐시가 좋다

- DEFAULT CACHE 20

- CACHE 5 : 5만큼의 캐시메모리에 시퀀스를 미리 할당하겠다


NOCACHE

- 캐시메모리 사용안함

- 시퀀스가 호출할 때마다 다음 값 만들어서 호출한다



1
CREATE SEQUENCE id_seq;
cs


가능하다

다 기본값을 적용하겠다는 뜻 → 기본적인 시퀀스



1
2
SELECT MAX(department_id)
FROM departments;
cs


1
2
3
4
CREATE SEQUENCE dept_id_seq
INCREMENT BY 10
START WITH 330
MAXVALUE 9999;

cs 


공지사항
최근에 올라온 글
Total
Today
Yesterday