티스토리 뷰

Sequence


MySQL에는 없고 Oracle에만 존재하는 Object

자동으로 고유한 번호를 반환해주는데 MySQL의 Auto-increment와 비슷하다.

 

- 사용방법 : 시퀀스명.nextval, 시퀀스명. currval

- 정의방법 : CREATE sequence, ALTER sequence, DROP sequence

 

시퀀스 생성

CREATE SEQUENCE dept_id_seq
	INCREMENT BY 10
	START WITH 320
	MAXVALUE 1000;

 

시퀀스명.NEXTVAL : 사용가능한 다음 시퀀스값 반환 (작업할 때 주로 사용)

INSERT INTO departments
VALUES (dept_id_seq.nextval, 'XXX', 108, 1700);

 

 

시퀀스명.CURRVAL : 현재 시퀀스값, 즉 마지막 시퀀스값 반환 (확인할 때 주로 사용)

SELECT dept_id_seq.currval
FROM DUAL;

- Gap이 발생했을 때는 insert로 값을 수동으로 직접 넣어주는 방법밖에 없으니 주의할 것!

- 시퀀스 수정은 시퀀스 간격, 최대값, 최소값, Cycle 옵션, Cache 옵션 변경이 가능하나,

시작값(start with N)은 변경이 불가능하다(새로 만들어야함)

 

 

시퀀스 옵션

따로 순서나 쉼표가 없다.

INCREMENT BY n 시퀀스 번호 사이 간격을 지정하는 옵션, 음수 지정이 가능하다. 생략 시 default = 1
ex) INCREMENT BY -5 : 5씩 감소
START WITH n 시퀀스 번호의 시작값을 지정하는 옵션, 생략 시 default = 1
MAXVALUE n |
NOMAXVALUE
시퀀스 번호의 최대값을 지정하는 옵션, 증가하는 번호일 경우 의미가 없다.
최대값 생략 시 NOMAXVALUE = 10의 27승
MINVALUE n |
NOMINVALUE
시퀀스 번호의 최소값을 지정하는 옵션, 감소하는 번호일 경우 의미가 없다.
최소값 생략 시 NOMINVALUE = -10의 26승
CYCLE | NO CYCLE  시퀀스 순환 여부를 지정하는 옵션, PK / UK에 주로 들어간다.
CACHE n | NOCACHE 시퀀스값 미리 할당 여부, 생략 시 default = cach 20(성능상 캐시가 있는 게 빠르다)

ex) CACHE 5 : 5 크기 만큼의 캐시메모리에 시퀀스 5개를 미리 만들어놓고 하나씩 할당한다.

5개가 다 비워져야 새로운 값을 할당받는다.

 

댓글
최근에 올라온 글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함