[Oracle] 시퀀스(Sequence)
by 캐떠린시퀀스(Sequence)
- 데이터베이스 객체 중 하나
- 오라클 전용 객체(다른 DBMS 제품에는 없음)
- 일련번호를 생성하는 객체(★★)
- (주로) 식별자(일련번호)를 만드는데 사용한다. → PK 값으로 사용한다.
시퀀스 객체 생성
1. 간단 ver.
create sequence 시퀀스명;
2. Full ver.
create sequence 시퀀스명 -- full ver.
increment by n --증감치(양수/음수)
start with n --시작값(Seed)
maxvalue n --최댓값
minvalue n --최솟값
cycle --순환
cache n;
시퀀스 객체 삭제
drop sequence 시퀀스명;
시퀀스 객체 사용(함수)
- 시퀀스명.nextVal : 호출 시 나올 다음 숫자를 반환
- 시퀀스명.currVal : 호출 시 현재 시퀀스 반환
SELECT 시퀀스명.nextVal FROM dual;
SELECT 시퀀스명.currVal FROM dual;
단, nextVal은 현재 시퀀스를 알 수 없다는 단점이 있다.
BUT currVal은 현재 시퀀스 번호를 확인할 수 있지만, 프로그램 재 실행 후, currVal 실행 시 아래와 같은 에러가 발생한다.
ORA-08002: sequence SEQNUM.CURRVAL is not yet defined in this session
→ 최소 1번 이상의 nextVal을 호출해야 사용이 가능하다. 이런 이유로 활용도가 생각보다 낮다.
시퀀스 객체 생성 Full ver. 활용
1. INCREMENT BY n : 증감치 설정, n만큼 시퀀스 증가
DROP SEQUENCE seqTest;
CREATE SEQUENCE seqTest
INCREMENT BY -1;
SELECT seqTest.nextVal FROM dual;
-- 위 예시의 경우 seq가 -1, -2, --- 로 -1만큼 시퀀스 증가
2. START WITH n : 시작값 설정, n부터 시작하는 시퀀스 생성
DROP SEQUENCE seqTest;
CREATE SEQUENCE seqTest
START WITH 10;
SELECT seqTest.nextVal FROM dual;
-- 위 예시의 경우 seq가 10부터 시작하여 1씩 증가
3. MAXVALUE n, MINVALUE n : 최댓값/최솟값 설정, n까지 시퀀스 생성(n 초과 시 생성 불가)
CREATE SEQUENCE seqTest
--INCREMENT BY -1;
--START WITH 10;
MAXVALUE 10;
SELECT seqTest.nextVal FROM dual;
-- Maximum 초과 시 > ORA-08004: sequence SEQTEST.NEXTVAL exceeds MAXVALUE and cannot be instantiated
4. cache : 하드 디스크에 왔다갔따 하는 횟수를 줄이기 위해 사용
*글 작성에 참고한 내용: 학원 쌤의 열정적인 수업
'DB > Oracle' 카테고리의 다른 글
[Oracle] UPDATE문, DELETE문 (1) | 2024.03.18 |
---|---|
[Oracle] INSERT문 (1) | 2024.03.18 |
[Oracle] DDL (0) | 2024.03.18 |
[Oracle] 함수 :: 날짜 시간 함수(date time function) (0) | 2024.03.18 |
[Oracle] 함수 :: 형변환 함수(casting function) (0) | 2024.03.18 |
블로그의 정보
All of My Records
캐떠린