SMALL
👋 안녕하세요, 개발자 여러분!
데이터베이스 설계할 때 "자동 증가 컬럼"은 매우 자주 사용하는 기능이에요.
Oracle에는 MySQL의 AUTO_INCREMENT
처럼 바로 사용할 수 있는 기능이 없지만, 시퀀스와 트리거를 활용하면 동일한 효과를 낼 수 있답니다! 😊
오늘은 Oracle에서 자동 증가 컬럼을 설정하는 방법을 차근차근 알아볼게요.
🎯 주요 내용
- 시퀀스란?
- 트리거를 사용한 자동 증가 설정
- 실전 예제 코드
- 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
'데이터베이스 > ORACLE' 카테고리의 다른 글
오라클 데이터 타입 총정리: 초보자를 위한 쉬운 가이드 (0) | 2024.12.20 |
---|---|
Oracle 트랜잭션 관리 쉽게 이해하기: START TRANSACTION, COMMIT, ROLLBACK 활용법 (0) | 2024.12.20 |
SQL 초보자를 위한 WHERE CASE WHEN 사용법: Oracle vs 다른 DB (0) | 2024.12.20 |
Oracle ON DELETE CASCADE와 SET NULL: 외래 키 옵션 완벽 가이드 (0) | 2024.12.20 |
[데이터베이스] ORACLE 조인(JOIN)의 종류와 차이점: INNER, LEFT, RIGHT, FULL OUTER JOIN 예제 코드 정리 (0) | 2024.10.29 |