시퀀스는 오라클 데이터베이스에서 일련번호를 자동으로 생성하는 데 사용되는 객체다.
주로 기본 키(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 |