[실전대화로 배우는 오라클] 시퀀스란?

Good_Day·2023년 10월 29일
0

oracle

목록 보기
3/4
post-thumbnail

🎈 실전대화

A : 이 쿼리를 사용하는 작업이 병렬로 수행하다보니 채번 시 듑이 나는데 어떻게 해야될까요?
B : 지금은 채번 어떻게 하고 있으실까요?
A : MAX(일련번호) + 1을 가져와서 채번하고 있습니다.
B : 시퀀스를 사용하면 조금 더 안전하게 사용 가능하니 시퀀스로 채번하시기 바랍니다.

🎈 시퀀스란?

시퀀스란 일종의 객체(함수성 쿼리)로서,
이 객체를 호출할 경우 해당 스키마에서 생성한 시퀀스 설정에 따라 다음 채번결과를 리턴해줍니다.

🎈 알아두기

보통은 시퀀스 생성/설정의 권한은 DDL 권한으로 부족하다보니 DBA에게 요청하면 생성해줍니다.
DBA가 생성해주더라도 실제로 사용하는 것은 개발자이기 때문에 어떻게 생성해달라고 요청을 하는 것도 중요하겠죠?
아래 설정을 참고해서 요청하고 협의하여 생성된 것을 사용하시면 되겠습니다.

🎈 실전사용

  • 시퀀스 생성관련
    • 시퀀스 이름: 시퀀스의 이름을 정의합니다.
      - 실제로 호출할 객체명입니다.
    • 시작 값 (START WITH): 시퀀스가 생성을 시작할 값을 지정합니다.
      - 보통은 1부터 시작하겠지만, 기존에 사용되던 테이블에 시퀀스를 사후적으로 적용할 경우 기존에 INSERT된 마지막 채번값+1이 된다거나 예외적인 상황이 있습니다.
    • 증가 값 (INCREMENT BY): 새로운 값이 생성될 때 이전 값에 더해질 값을 지정합니다.
      - 이 값에 따라 역순(-1)으로 채번하거나 100단위로 채번을 시키거나 다양한 조건이 가능합니다.
    • 최소 값 (MINVALUE)와 최대 값 (MAXVALUE): 시퀀스의 범위를 제한하는 최소 값과 최대 값을 정의할 수 있습니다.
    • 주기 (CYCLE): 시퀀스가 최대 값 또는 최소 값에 도달했을 때 다시 시작할지 여부를 지정합니다.
    • 캐시 크기 (CACHE): 시퀀스 값의 캐시 크기를 설정하여 성능을 향상시킬 수 있습니다.
      - 캐시 크기에 따라 미리 메모리를 할당하여 속도를 원활하게 만들 수 있습니다.
    • 정렬 (ORDER): 이 옵션이 지정되지 않으면 시퀀스는 기본적으로 오름차순으로 생성됩니다. 이는 새 값이 이전 값보다 크거나 같은 순서로 생성됨을 의미합니다.
      - NOORDER를 사용하면 시퀀스가 무작위 순서 또는 입력된 순서로 생성됩니다. (보통은 NOORDER를 많이 쓰는 듯 합니다.)

🎈 대화에 적용해보기

A : 안녕하세요 B! 시퀀스 생성 요청 드립니다.
시퀀스명은 SQ_EX_1이고 1부터 1씩 증가하게 캐시 3000, NOORDER, CYCLE 지정없이 부탁드립니다.
B : MAX값은 따로 지정안하실거면 999,999로 하겠습니다.
A : 네 감사합니다.

🎈 How to use?

-- 1부터 시작하여 채번시마다 1씩 증가하고 100이 되었을 경우 1부터 다시 채번
CREATE SEQUENCE [시퀀스명]
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 100
CYCLE
CACHE 10;

[시퀀스명].CURRVAL; -- 현재값 return
[시퀀스명].NEXTVAL; -- 다음채번값 return

-- 일자별 채번을 사용하는 예시
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') || [시퀀스명].NEXTVAL
  FROM DUAL

.
.
.
잘못된 내용이 있을 경우 알려주시면 적극 반영하겠습니다 😊👍

profile
여신코어뱅킹 개발자

0개의 댓글

관련 채용 정보