본문 바로가기

Backend/Database

[ORACLE] 일련번호 발생을 위한 시퀀스(SEQUENCE)

 


일련번호 발생을 위한 시퀀스(SEQUENCE)


 

 

1. 시퀀스(SEQUENCE)란?


시퀀스는 테이블 내의 중복되지 않는 숫자를 자동으로 생성하는 자동 번호 발생기이다. 테이블 생성 후 시퀀스(일련번호)를 따로 만들어야 한다. 주로 NUMBER 자료형의 기본키 값으로 사용한다. NUMBER의 자리수가 몇자리냐에 따라 그만큼 숫자가 증가할 수 있다.

 

 

 

2. 시퀀스 생성


CREATE SEQUENCE 시퀀스이름 START WITH 시작숫자 INCREMENT BY 증가량;

 

 

예시1. 1부터 시작해서 1만큼씩 증가하는 book_seq 이름의 시퀀스를 생성한다면?

CREATE SEQUENCE book_seq START WITH 1 INCREMENT BY 1;

 

예시2. 10부터 시작해서 2만큼씩 증가하는even_seq 이름의 시퀀스를 생성한다면?

CREATE SEQUENCE even_seq START WITH 10 INCREMENT BY 2;

 

 

 

3. 시퀀스 사용


-- 1부터 시작해서 1만큼씩 증가하는 book_seq 이름의 시퀀스
CREATE SEQUENCE book_seq START WITH 1 INCREMENT BY 1;

 

위와 같은 시퀀스가 생성되어 있을 때, 시퀀스를 불러오기 위해서는 시퀀스이름.nextVal 형태를 이용한다.

 

-- booklist 테이블에 booknum과 title 필드 두개가 존재한다고 했을 때, 값을 입력
INSERT INTO booklist VALUES(book_seq.nextVal, '불친절한 SQL');

 

INSERT INTO 는 레코드(값)를 삽입하는 명령이다. 다음 글에서 다룰 예정이다.

 

 

 

4. 시퀀스 수정


-- 최대 증가값을 14까지로 제한
ALTER SEQUENCE book_seq maxvalue 14;

 

 

 

5. 시퀀스 삭제


-- 시퀀스 삭제
DROP SEQUENCE book_seq;

 

 

시퀀스는 값의 중복이 없어 데이터를 식별하기 위한 기본키로 사용된다. 만약 시퀀스를 삭제 후 재생성하고 싶다면, 이미 증가된 다음 값부터 시작하게 하여 기존 레코드와 중복되지 않도록 한다.

-- 1부터 1씩 증가하는 book_seq를 3까지 동작하고, 시퀀스를 삭제했다면?
CREATE SEQUENCE book_seq START WITH 4 INCREMENT BY 1;