본문 바로가기
DBMS/ORACLE

[ORACLE] 오라클_시퀀스(Sequence) 생성 / 수정 / 삭제

by 썸머워즈 2019. 2. 17.
반응형

시퀀스(Sequence)

  • 유일한 값을 생성해주는 오라클 객체이다.
  • 일련번호, 자동증가 값을 생성한다.
  • 시퀀스는 독립적으로 테이블과 별개로 동작한다.
  • 모든 DBMS에서 사용하는 것은 아니다.
  • 시퀀스는 메모리에 Cache하여 성능을 향상 시킬 수 있다.

보통 시퀀스를 사용하는 부분은 테이블에서 기본키(Primary key)를 생성하여 사용하기 위해 사용하고는 한다.

기본키다 보니 시퀀스의 숫자를 자동으로 증가시켜 중복이 안되는 고유키로 사용하는 것이다.

 

이제 시퀀스 생성 / 수정 / 삭제 에 대해 하나하나 알아가 보도록 하자.

1. 시퀀스 생성 (CREATE SEQUENCE)

- 시퀀스 역시 마찬가지로 CREATE 구문을 사용하여 간단하게 생성이 가능하다.

 

▷ 구문

CREATE SEQUENCE [시퀀스 이름]
    [START WITH 시작번호]
    [INCREMENT BY 증가단위]
    [MAXVALUE 최대값]
    [MINVALUE 최소값]
    [CYCLE | NOCYCLE]
    [CACHE | NOCACHE]

위 구문 처럼 CREATE SEQUENCE 를 사용하여 시퀀스를 생성하면 되며,

"시퀀스 이름" 빼고 나머지는 생략이 가능하니 필요에 따라 사용하면 된다.

 

각 옵션에 대해 알아보도록 하자. (각 옵션 별 생략 시 기본값(DEFAULT) 가 존재한다.)

START WITH는 말 그대로 지정한 번호부터 시퀀스를 시작하겠다는 의미이다. (생략 시 DEFAULT : 1)

INCREMENT BY는 증가단위를 의미하는데, 지정한 값 만큼 시퀀스가 증가한다. (생략 시 DEFAULT : 1)

MAXVALUE는 말 그대로 시퀀스의 최대값을 의미한다. (생략 시 DEFAULT : 해당 오라클 버전에서의 시퀀스 최대값)

MINVALUE는 MAXVALUE의 반대로 시퀀스의 최소값을 의미한다. (생략 시 DEFAULT : 1)

CYCLE | NOCYCLE시퀀스의 순환여부를 지정하는 것이다. (생략 시 DEFAULT : NOCYCLE)

순환여부가 무슨 의미인가 하면 시퀀스가 MAXVALUE에 도달했을때 다시 시작값으로 돌아갈 것인지에 대한 설정이며, 순환여부를 CYCLE로 설정할 경우 개발할때 테이블의 기본값을 (시퀀스 + 날짜) 조합으로 지정하여 사용 하는 경우도 있다.

CACHE | NOCACHE시퀀스 값을 메모리에 할당할 것인지에 대한 설정이다. (생략 시 DEFAULT : CACHE 20)

 

▷ 사용 예제

--시퀀스 생성
CREATE SEQUENCE testSeq
  START WITH 1 INCREMENT BY 1
  MAXVALUE 5000 
  MINVALUE 1
  CYCLE 
  CACHE 20;

2. 시퀀스 수정 (ALTER SEQUENCE)

- 수정 역시 마찬가지로 ALTER 구문을 사용하여 수정이 가능하다.

 

▷ 구문

ALTER SEQUENCE [시퀀스 이름]
    [INCREMENT BY 증가단위]
    [MAXVALUE 최대값]
    [MINVALUE 최소값]
    [CYCLE | NOCYCLE]
    [CACHE | NOCACHE]

CREATE 구문과 다르게 옵션이 하나 빠졌는데, ALTER 구문에서는 START WITH 옵션 값은 수정이 불가능하다.

 

수정을 할 때 하나 알아둬야 할 점이 있는데, MINVALUE를 바꿀때 현재값이랑 동일하게 바꿀경우 아래와 같은 에러가 발생하니 현재 값 부터 초기화 해준뒤에 사용해 주도록 하자. (현재 값 초기화는 본문 하단의 링크를 참조)

[MINVALUE cannot be made to exceed the current value]

 

그리고 혹시나 지금까지 생성된 시퀀스가 궁금하다면 데이터를 조회할 수 있다.

 

* 시퀀스 검색

-- 현재 계정의 모든 시퀀스의 데이터를 전부 보여줍니다.
SELECT * FROM USER_SEQUENCES;

 

▷ 사용 예제

--시퀀스 수정
ALTER SEQUENCE testSeq
  INCREMENT BY 1
  MAXVALUE 100000 
  NOCYCLE 
  CACHE 50;

3. 시퀀스 삭제 (DROP SEQUENCE)

- 이 역시 DROP 구문을 사용하면 끝난다.

 

▷ 구문

DROP SEQUENCE [시퀀스 이름];

 

▷ 사용 예제

--시퀀스 삭제
DROP SEQUENCE testSeq;

여기까지 시퀀스의 생성, 수정, 삭제 하는 방법에 대해 알아봤으며

추가적으로 시퀀스의 VALUE에 대한 제어는 아래 게시글을 통해 접해보자.

https://mine-it-record.tistory.com/62

 

[ORACLE]오라클_시퀀스(NEXTVAL , CURRVAL) 사용법

일단 NEXTVAL 와 CURRVAL을 사용하기에 앞서 시퀀스를 생성하고 오도록 하자. (https://mine-it-record.tistory.com/61) [ORACLE]오라클_시퀀스(Sequence) 생성 / 수정 / 삭제 시퀀스(Sequence) - 유일한 값을 생..

mine-it-record.tistory.com

반응형


댓글

TOP