본문 바로가기

Oracle

오라클 시퀀스 알아보기!

시퀀스(Sequence)란?

오라클 시퀀스(Sequecne)란 기본 키 값을 자동으로 생성할 수 있는 데이터베이스 오브젝트입니다.

CREATE SEQUECNE 문을 사용해서 여러 사용자가 고유한 정수를 사용할 수 있게 도와줍니다.

시퀀스의 특이한 점은 사용자의 커밋과 롤백에 상관없이 시퀀스가 증가한다는 것입니다.

즉, 두 명의 사용자가 동시에 시퀀스를 증가시키면 두 명의 사용자는 다른 값의 시퀀스를 얻게 됩니다.

시퀀스를 사용하는 이유?

데이터베이스에서 테이블을 생성하고 데이터를 저장할 때, 이 테이블의 값을 구별하기 위한 고유한 식별번호를

PK로 지정하는 경우가 보통입니다. PK 값은 중복이 없는 고유한 번호를 반드시 지정해야 하며 이때 시퀀스를 

활용하여 고유한 정수를 만들 수 있습니다. 예를들어 a = a+1라는 로직을 구문에 넣지 않고 간편하게 시퀀스의

시퀀스. nextval를 활용하여 만듦으로써 편의성과 정확성을 향상할 수 있습니다.

시퀀스 Syntax

CREATE SEQUENCE

CREATE SEQUENCE [ schema. ] sequence
   [ { INCREMENT BY | START WITH } integer
   | { MAXVALUE integer | NOMAXVALUE }
   | { MINVALUE integer | NOMINVALUE }
   | { CYCLE | NOCYCLE }
   | { CACHE integer | NOCACHE }
   | { ORDER | NOORDER }
   ]...
   
CREATE SEQUENCE 시퀀스명
INCREMENT BY 증가 또는 감소하는 값
START WITH 시작값
MINVALUE 최소값
MAXVALUE 최대값
CYCLE OR NOCYCLE -- CYCLE 일 경우 MAXVALUE를 초과하게 되면 MINVALUE 부터 다시 시작
CACHE OR NOCACHE 숫자 -- CACHE 일 경우 메모리에 캐싱
ORDER OR NOORDER -- 시퀀스를 순차적으로 증가또는 감소하여 생성

시퀀스 작성 예시

CREATE SEQUENCE sequence_test
 START WITH     1000
 INCREMENT BY   1
 MINVALUE 1
 MAXVALUE 999999
 NOCACHE
 NOCYCLE;

출처 : https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6015.htm#SQLRF01314

 

CREATE SEQUENCE

Purpose Use the CREATE SEQUENCE statement to create a sequence, which is a database object from which multiple users may generate unique integers. You can use sequences to automatically generate primary key values. When a sequence number is generated, the

docs.oracle.com