데이터베이스/ORACLE

Oracle 자동 증가 컬럼: 시퀀스와 트리거로 구현하기 AUTO_INCREMENT

CodeCaine Explorer 2024. 12. 20. 18:44
SMALL

👋 안녕하세요, 개발자 여러분!

데이터베이스 설계할 때 "자동 증가 컬럼"은 매우 자주 사용하는 기능이에요.
Oracle에는 MySQL의 AUTO_INCREMENT처럼 바로 사용할 수 있는 기능이 없지만, 시퀀스트리거를 활용하면 동일한 효과를 낼 수 있답니다! 😊

오늘은 Oracle에서 자동 증가 컬럼을 설정하는 방법을 차근차근 알아볼게요.


🎯 주요 내용

  1. 시퀀스란?
  2. 트리거를 사용한 자동 증가 설정
  3. 실전 예제 코드
  4. Oracle 12c 이후의 간단한 방법

1️⃣ 시퀀스란? 🤔

시퀀스(sequence)는 숫자 값을 자동으로 생성해주는 Oracle의 객체입니다.
주로 기본 키나 유니크한 값을 생성할 때 사용해요.

시퀀스 생성 문법:

CREATE SEQUENCE 시퀀스이름
START WITH 시작값
INCREMENT BY 증가값;

예제:

CREATE SEQUENCE my_sequence
START WITH 1
INCREMENT BY 1;

이 시퀀스는 1부터 시작해 1씩 증가하는 값을 생성합니다. 😊


2️⃣ 트리거를 사용한 자동 증가 설정 ✨

Oracle에서는 시퀀스와 트리거(trigger)를 조합해 특정 테이블의 컬럼 값을 자동으로 증가시킬 수 있어요.

테이블 생성:

CREATE TABLE my_table (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(100)
);

시퀀스 생성:

CREATE SEQUENCE my_sequence
START WITH 1
INCREMENT BY 1;

트리거 생성:

CREATE OR REPLACE TRIGGER my_table_trigger
BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
    :NEW.id := my_sequence.NEXTVAL;
END;

💡 트리거 설명

  • :NEW.id는 새로 삽입되는 행의 id 값을 의미합니다.
  • my_sequence.NEXTVAL을 이용해 새로운 값이 자동 할당됩니다.

3️⃣ 실전 예제: 데이터 삽입 🚀

INSERT INTO my_table (name) VALUES ('Alice');
INSERT INTO my_table (name) VALUES ('Bob');

결과:

SELECT * FROM my_table;
ID NAME
1 Alice
2 Bob

짜잔~! 자동으로 ID가 생성되었어요. 😊


4️⃣ Oracle 12c 이후의 간단한 방법 🎉

Oracle 12c부터는 IDENTITY 컬럼을 지원합니다.
이 방식은 MySQL의 AUTO_INCREMENT와 유사해요!

테이블 생성:

CREATE TABLE my_table (
    id NUMBER GENERATED AS IDENTITY PRIMARY KEY,
    name VARCHAR2(100)
);

데이터 삽입:

INSERT INTO my_table (name) VALUES ('Alice');
INSERT INTO my_table (name) VALUES ('Bob');

결과:

ID NAME
1 Alice
2 Bob

참고: IDENTITY 컬럼은 기본값을 설정하거나 수정할 필요가 없어 편리해요!


🌈 마무리하며...

Oracle에서 자동 증가 컬럼을 설정하는 방법, 생각보다 간단하죠? 😊
시퀀스 + 트리거 방식은 오랜 기간 사용된 전통적인 방법이고, 12c 이후의 IDENTITY 컬럼은 더 간단한 대안입니다.
두 가지 방법 모두 상황에 맞게 활용해보세요!

728x90
반응형
SMALL