Oracle 시퀀스(Sequence)
Oracle 시퀀스(Sequence)
Oracle 시퀀스(Sequence)는 일련번호를 자동으로 생성하고, 관리하는 DB객체이다. 주로 테이블의 기본 키(Primary Key)값으로 사용되며, 중복된 ㄱ밧 없이 고유한 값을 보장한다.
테이블에 데이터를 저장할 때, 종종 각 행을 고유하게 식별할 수 있는 기본 키(Primary Key)가 필요하다.
이 기본 키는 중복될 수 없으며, 일반적으로 숫자 값으로 설정된다. 사용자가 직접 이 값을 관리하려면 중복이나 누락 없이 정확하게 관리해야 하는 번거러움이 있다.
이런 문제를 해결하기위해 Sequence라는 객체를 제공한다.
시퀀스(Sequence) 장점
1. 자동증가 : 시퀀스는 자동으로 증가하거나 감소하는 일련의 숫자를 생성한다. 이는 중복되지 않는 기본 키 값을 만드는 데 유용하다.
2. 동시성 관리 : 여러 사용자가 동시에 데이터를 추가할 때, 동일한 기본 키 값을 가진 행을 추가하는 문제를 방지한다.
3. 성능 향상 : 시퀀스 값은 메모리에 캐시될 수 있어, 디스크 I / O 를 줄이고 성능을 향상시킬 수 있다.
4. 유연성 : 시작 값, 최대 / 최소 값, 증가 / 감소 값, 캐시 크기 등을 사용자가 지정할 수 있다.
데이터 예제
-- 시퀀스 생성
CREATE SEQUENCE user_id_seq
START WITH 1
INCREMENT BY 1;
-- users 테이블 생성
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100)
);
-- 트리거 생성
CREATE OR REPLACE TRIGGER user_id_trigger
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SELECT user_id_seq.NEXTVAL
INTO :new.id
FROM dual;
END;
/
-- 시퀀스를 이용하여 테이블에 데이터 삽입
INSERT INTO users (username, email)
VALUES ('홍길동', 'hong@example.com');
INSERT INTO users (username, email)
VALUES ('이순신', 'lee@example.com');
INSERT INTO users (username, email)
VALUES ('강감찬', 'kang@example.com');
위 예제에서는 'user_id_seq' 라는 시퀀스를 생성하였고, 사용자를 추가할 때마다
'user_id_seq.NEXTVAL' 을 사용하여, 'id'를 자동으로 생성한다.
이후 사용자 정보를 조회하려면 아래와 같이 쿼리를 통해 조회할 수 있다.
SELECT * FROM users;
시퀀스를 사용하여 id 값을 자동으로 생성하면, 새로운 레코드를 삽입할 때마다, 자동으로 증가하는 id 값을 얻을 수 있다. 따라서, 레코드를 삽입할 때 마다 id 값을 따로 지정해주지 않아도 되며, 중복되지 않는 유니크한 id 값을 보장받을 수 있다. 이는 데이터베이스 관리를 용이하게하며, 효율적이 데이터 관리를 가능하게 한다.