티스토리 뷰
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개가 다 비워져야 새로운 값을 할당받는다.
'배운 것 기록 > DB' 카테고리의 다른 글
[MySQL] AWS RDS 생성 및 설정 (0) | 2022.08.16 |
---|---|
[Oracle] Object - Index, Synonym (0) | 2022.08.05 |
[Oracle] Recyclebin / Flashback / Purge (0) | 2022.07.31 |
[Oracle] Object - Table, View (0) | 2022.07.29 |
[Oracle] ALTER ADD / MODIFY / DROP / RENAME (0) | 2022.07.29 |
댓글