DBMS/개념

13_ 시퀀스

seungwon-1 2025. 10. 3. 16:57

시퀀스는 오라클 데이터베이스에서 일련번호를 자동으로 생성하는 데 사용되는 객체다.
주로 기본 키(Primary Key) 값을 자동으로 부여할 때 활용된다.


 

1. 시퀀스의 정의

시퀀스(Sequence)는 데이터베이스 내에서 고유한 숫자 값을 순차적으로 생성하는 객체이다.
INSERT할 때마다 자동으로 증가하는 값을 만들어주기 때문에, 중복되지 않는 키 값을 쉽게 관리할 수 있다.

 

2. 시퀀스의 특징

  • 자동으로 증가하는 숫자를 생성한다.
  • 여러 테이블에서 공유 가능하다.
  • 메모리에 캐시(Cache) 되어 빠른 접근이 가능하다.
  • 동시성 문제 없이 여러 세션에서 동시에 사용할 수 있다.

 


3. 시퀀스 생성 구문

CREATE SEQUENCE sequence_name
[START WITH n]         -- 시작 값
[INCREMENT BY n]       -- 증가 단위
[MAXVALUE n | NOMAXVALUE]  -- 최대값
[MINVALUE n | NOMINVALUE]  -- 최소값
[CYCLE | NOCYCLE]      -- 순환 여부
[CACHE n | NOCACHE];   -- 캐시 여부

주요 옵션 설명

  • START WITH: 시퀀스가 시작할 숫자
  • INCREMENT BY: 몇씩 증가할지 설정
  • MAXVALUE / NOMAXVALUE: 최대값 지정 또는 제한 없음
  • CYCLE / NOCYCLE: 최대값 도달 시 다시 순환할지 여부
  • CACHE / NOCACHE: 메모리에 미리 값을 저장해둘지 결정

 

4. 시퀀스 사용 예시

-- 시퀀스 생성
CREATE SEQUENCE emp_seq
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;

 

-- 시퀀스를 이용해 INSERT
INSERT INTO employees (emp_id, emp_name)
VALUES (emp_seq.NEXTVAL, '홍길동');

-- 현재 시퀀스 값 확인
SELECT emp_seq.CURRVAL FROM dual;

 

  • NEXTVAL: 다음 시퀀스 값 반환
  • CURRVAL: 현재 시퀀스 값 반환

 

5. Oracle 12c 이후의 향상된 기능

이전에는 INSERT 시 반드시 NEXTVAL을 명시해야 했지만,
Oracle 12c부터는 시퀀스를 컬럼의 DEFAULT 값으로 지정할 수 있다.

CREATE TABLE employees (
    emp_id NUMBER DEFAULT emp_seq.NEXTVAL,
    emp_name VARCHAR2(100)
);

 

이렇게 설정하면 다음처럼 간단히 입력할 수 있다.

INSERT INTO employees (emp_name) VALUES ('홍길동');
INSERT INTO employees (emp_name) VALUES ('김철수');

emp_id는 자동으로 시퀀스 값이 들어간다.

 

6. 시퀀스 관리

6.1 시퀀스 수정

ALTER SEQUENCE emp_seq INCREMENT BY 10;

6.2 시퀀스 삭제

DROP SEQUENCE emp_seq;

6.3 시퀀스 정보 조회

 
SELECT * FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'EMP_SEQ';

 

 

시퀀스의 장단점

장점

  • 고유한 값을 자동으로 생성할 수 있다.
  • 동시성 문제를 해결한다.
  • 코드의 간결성과 재사용성이 높다.

단점

  • 시퀀스 값에 공백(갭) 이 생길 수 있다.
  • 트랜잭션이 롤백되어도 시퀀스 값은 되돌릴 수 없다.

즉, 시퀀스는 단순히 번호 생성기 역할만 하며,
데이터 무결성과 일관성은 별도로 관리해야 한다.

'DBMS > 개념' 카테고리의 다른 글

15_ 인덱스(Index)  (0) 2025.10.07
14_ NULL과 NVL() 함수  (0) 2025.10.05
12_ ALTER문  (0) 2025.10.01
11_ 제약 조건  (0) 2025.09.29
10_ 설계의 3단계  (0) 2025.09.27