본문 바로가기
DATABASE/Oracle

[Oracle] 11g 시퀀스 (Sequence) 컬럼 자동 증가 값

by DANEW 2023. 8. 9.

Intro

안녕하세요

초보 DBA 다뉴입니다.

 

오늘은 오라클의 Object중 하나인 시퀀스에 대해 알아 보도록 하겠습니다.


Sequence

시퀀스(Sequence)란?

 - 순차적으로 자동증가 하는 값을 반환하는 객체

 - 일반적으로 PK값 중복 방지를 위해 사용

 - 생성, 사용 방법, 수정, 삭제

시퀀스(Sequence) 생성

CREATE SEQUENCE [SequenceName] -- 생성 시퀀스 명, 해당 Create문을 제외한 나머지 부분은 다 생략 가능
  INCREMENT BY [n] -- 증감 값, n만큼 시퀀스 값이 증가(양수) 또는 감소(음수), default = 1 (생략시)
  START WITH [n] -- 시작숫자 default = 증가 일때 MINVALUE / 감소 일때 MAXVALUE
  MINVALUE(NOMAXVALUE) [n] -- 최소 값 설정, default = 1 (생략시)
                           -- NOMAXVALUE : 최소 값은 INCREMENT BY 가 양수 일때 = 1 / 음수 일때 = -10^26
  MAXVALUE(NOMAXVALUE) [n] -- 최대 값 설정, default = 10^27 (생략시)
                           -- NOMAXVALUE : 최대 값은 INCREMENT BY 가 양수 일때 = 10^27 / 음수 일때 = -1
  CYCLE OR NOCYCLE -- CYCLE : 최대값에 도달 -> 최소값부터 다시 시작 
                   -- NOCYCLE : 최대값에 도달 -> 시퀀스 생성중지 (default)
  CACHE OR NOCACHE -- CACHE : 메모리에 시퀀스 값을 미리 할당 (default = CACHE 20)
                   -- NOCACHE : 시퀀스 값을 메로리에 할당하지 않음

시퀀스(Sequence) 사용 방법

-- 시퀀스 사용
-- 다음 시퀀스 값을 insert문에 넣어 key로 활용
insert into [Table] values([SequenceName].NEXTVAL, col1, ...)

-- 시퀀스 조회
-- 해당 시퀀스를 조회
select [SequenceName].CURRVAL from DAUL

[SequenceName].NEXTVAL : 해당 시퀀스의 다음 값을 가져옵니다.
[SequenceName].CURRVAL : 해당 시퀀스의 값을 조회합니다.

반응형

시퀀스(Sequence) 수정

ALTER SEQUENCE [SequenceName] 
  INCREMENT BY [n] 
  START WITH [n] 
  MINVALUE(NOMAXVALUE) [n] 
  MAXVALUE(NOMAXVALUE) [n]
  CYCLE OR NOCYCLE 
  CACHE OR NOCACHE

시퀀스(Sequence) 삭제

DROP SEQUENCE [SequenceName]

Outro

Oracle의 여러 Object들 중 하나인 시퀀스에 대해서 알아봤는데요.

많이 사용되는 오브젝트인 만큼 잘 알아두고 사용하면 좋을 것 같습니다.

 

초기에 설정할때 컬럼 타입의 최대값하고 맞춰서 설정하고,

컬럼 코멘트에 해당 시퀀스를 사용한다라는 코멘트를 달아두어 사용할때 편하게 사용하는 등

추가적인 센스가 필요하네요!!

 

여기까지 오라클 시퀀스에 대한 내용이였습니다.

감사합니다.

반응형