SQL ORACLE

2024.12.27(금) 9일차 / 시퀀스

동준1234 2024. 12. 27. 16:12

SQL 을 하다보면 데이터들의 값이 누적되어 한 컬럼에 적립 되는 경우가 많다.

이때 시퀀스(SEQUENCE)를 사용하게 되면 보다 편하게 누적시킬 수 있다.

시퀀스란 자동으로 숫자를 발생시켜주는 역할을 하는 객체이다.

정수값을 순차적으로 일정하게 증가시키면서 생성해준다.

EX) 회원번호, 사원번호, 게시글번호 ...

시퀀스의 기본 문법

기본 문법만 봐도 알 수 있듯이 여러가지 값들을 넣을 수 있다. 이 값들로 인해 편리하게 값들을 정리할 수 있다.

옵션 설명

  1. START WITH
    • 시퀀스의 시작값을 설정함.
    • 기본값은 1임.
  2. INCREMENT BY
    • 증가 값을 설정함.
    • 양수: 값이 증가, 음수: 값이 감소.
    • 기본값은 1임.
  3. MAXVALUE / NOMAXVALUE
    • 시퀀스의 최대값을 설정함.
    • 기본값은 NOMAXVALUE(제한 없음)임.
  4. MINVALUE / NOMINVALUE
    • 시퀀스의 최소값을 설정함.
    • 기본값은 NOMINVALUE(제한 없음)임.
  5. CYCLE / NOCYCLE
    • 최대값에 도달했을 때:
      • CYCLE: 다시 최소값으로 돌아가 시퀀스를 반복.
      • NOCYCLE: 오류 발생, 시퀀스 종료.
  6. CACHE / NOCACHE
    • 시퀀스 값을 미리 생성해두는 캐시 크기를 설정함.
    • CACHE n: n개의 값을 미리 생성하여 성능 최적화(기본값: 20).
    • NOCACHE: 캐시를 사용하지 않음.
  7. ORDER / NOORDER
    • 여러 사용자가 동시에 시퀀스를 사용할 때:
      • ORDER: 요청 순서대로 값을 생성.
      • NOORDER: 순서를 보장하지 않음(기본값).

시퀀스 값 사용 예제이다

 

NEXTVAL, CURVAL 로 값을 조회하고 기본키와 일련번호 생성에 도움을 준다.

NEXTVAL 로 생성하고, CURRVAL 로 현재 값을 조회한다.

이때, CURRVAL 을 NEXTVAL 을 사용하기 전에 먼저 조회한다면, 에러가 나온다.

CURRVAL 은 마지막으로 성공한 NEXTVAL 의 값을 저장하여 보여주는 임시값 이기 때문이다.

따라서 꼭 NEXTVAL 을 먼저 조회하도록 하자.