✅ 시퀀스(Sequence)란?
자동으로 숫자를 1씩 증가시키는 번호표 생성기야!
📌 보통 **기본키(PK)**에 들어갈 고유한 번호(ID)를 자동으로 만들어줄 때 사용해!
🎯 왜 시퀀스를 쓰는 걸까?
- 자동 번호 부여
→ 1, 2, 3,... 자동으로 생성돼서 중복 없이 안전하게 번호 붙일 수 있어! - 여러 명이 동시에 등록해도 문제 없음
→ 동시성이 보장돼! (= 충돌 안 남) - 규칙(증가값, 시작값 등)을 내 맘대로 설정 가능
✅ 시퀀스 만드는 법
CREATE SEQUENCE 시퀀스이름
START WITH 1 -- 시작값
INCREMENT BY 1 -- 몇씩 증가할지
MINVALUE 1 -- 최소값
MAXVALUE 9999 -- 최대값
NOCYCLE -- 끝까지 가면 멈춰! (다시 시작 안 함)
CACHE 20; -- 미리 20개 만들어놓고 성능 향상
✨ 예시
CREATE SEQUENCE cust_seq
START WITH 1
INCREMENT BY 1
NOCACHE;
✅ 시퀀스 사용하는 법
-- 다음 숫자 하나 뽑기
SELECT cust_seq.NEXTVAL FROM dual;
-- 현재까지 사용된 값 보기 (NEXTVAL을 먼저 실행한 후에만 가능)
SELECT cust_seq.CURRVAL FROM dual;
✅ 시퀀스를 INSERT에 사용하기
INSERT INTO customers (cust_id, name)
VALUES (cust_seq.NEXTVAL, '홍길동');
→ 이러면 cust_id에 1, 2, 3... 자동으로 들어가!
✅ 시퀀스 삭제
DROP SEQUENCE cust_seq;
🔁 옵션 정리
| 옵션 | 설명 |
| START WITH n | 시작 숫자 |
| INCREMENT BY n | 몇씩 증가할지 |
| MINVALUE / MAXVALUE | 최소/최대 범위 |
| CYCLE / NOCYCLE | 최대 도달 시 다시 처음으로 돌아갈지 여부 |
| CACHE / NOCACHE | 성능 향상을 위해 몇 개를 미리 생성해둘지 |
💡 참고 꿀팁!
- NEXTVAL은 항상 먼저 써야 CURRVAL이 생겨!
- 시퀀스는 테이블과 별개 객체야 → 테이블 지워도 시퀀스는 남아있어!
- 기본키 자동 증가할 때 최고 유용해!
'대덕인재 > Oracle' 카테고리의 다른 글
| [Oracle D-16] SYNONYM 객체 (0) | 2025.04.22 |
|---|---|
| [Oracle D-16] 비트맵 인덱스(Bitmap Index) (0) | 2025.04.22 |
| [Oracle D-16] VIEW (0) | 2025.04.22 |
| [Oracle D-15] Oracle 객체 (0) | 2025.04.21 |
| [Oracle D-15] 집합연산자(Set Operators) (0) | 2025.04.21 |