ORACLE - AUTO_INCREMENT 기능 구현

2025. 1. 20. 13:52·개발/ORACLE
목차
  1. 1. 시퀀스
  2. 시퀀스 생성
  3. 시퀀스를 사용하여 INSERT
  4. 시퀀스 값 조회
  5. 2. 시퀀스 + 트리거
  6. 테이블 생성
  7. 시퀀스 생성
  8. 트리거 생성
  9. INSERT
  10. 3. IDENTITY (Oracle 12c 이상)
  11. 테이블 생성
  12. INSERT
  13. IDENTITY 옵션
728x90
반응형

SQL에서 테이블 생성 시 PK로 사용하는 컬럼은 대게 자동 증가(Auto Increment)를 사용한다.

 

MySQL에서 테이블 생성시 PK에 Auto_Increment를 사용하면 되지만 오라클에는 없기 때문에
시퀀스와 트리거를 조합해 기능을 구현할 수 있다.

12c 이상에서는 IDENTITY 컬럼을 사용할 수 있다.


1. 시퀀스

시퀀스 생성

CREATE SEQUENCE my_sequence
  START WITH 1      -- 시작 값
  INCREMENT BY 1    -- 증가 값
  NOCACHE           -- 캐싱 안 함 (안정성 위해)
  NOCYCLE;          -- 최댓값 도달 시 다시 시작 안 함

 

시퀀스를 사용하여 INSERT

INSERT INTO my_table (id, name) 
VALUES (my_sequence.NEXTVAL, 'JOO');

 

시퀀스 값 조회

SELECT my_sequence.CURRVAL FROM dual;

2. 시퀀스 + 트리거

테이블 생성

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_before_insert
BEFORE INSERT ON my_table
FOR EACH ROW
WHEN (NEW.id IS NULL)
BEGIN
  :NEW.id := my_sequence.NEXTVAL;
END;
/

 

INSERT

INSERT INTO my_table (name) VALUES ('JOO');
INSERT INTO my_table (name) VALUES ('JOOO');

SELECT * FROM my_table;

3. IDENTITY (Oracle 12c 이상)

테이블 생성

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

 

INSERT

INSERT INTO my_table (name) VALUES ('JOO');

 

IDENTITY 옵션

  • GENERATED ALWAYS AS IDENTITY - 자동 생성 (수동 삽입 불가)
  • GENERATED BY DEFAULT AS IDENTITY - 자동 생성 (수동 삽입 가능)
728x90
반응형
저작자표시 (새창열림)

'개발 > ORACLE' 카테고리의 다른 글

ORACLE - PIVOT and UNPIVOT  (0) 2025.05.23
ORACLE - INSERT WITH절에 FUNCTION 사용시 오류 (ORA-32034)  (3) 2025.03.07
ORACLE - ORA-25156 ANSI 조인, (+)  (2) 2024.11.20
Oracle 힌트절  (1) 2024.11.07
Oracle 인덱스  (0) 2024.08.16
  1. 1. 시퀀스
  2. 시퀀스 생성
  3. 시퀀스를 사용하여 INSERT
  4. 시퀀스 값 조회
  5. 2. 시퀀스 + 트리거
  6. 테이블 생성
  7. 시퀀스 생성
  8. 트리거 생성
  9. INSERT
  10. 3. IDENTITY (Oracle 12c 이상)
  11. 테이블 생성
  12. INSERT
  13. IDENTITY 옵션
'개발/ORACLE' 카테고리의 다른 글
  • ORACLE - PIVOT and UNPIVOT
  • ORACLE - INSERT WITH절에 FUNCTION 사용시 오류 (ORA-32034)
  • ORACLE - ORA-25156 ANSI 조인, (+)
  • Oracle 힌트절
joolog
joolog
  • joolog
    JOO
    joolog
  • 전체
    오늘
    어제
    • 분류 전체보기 (167)
      • 개발 (84)
        • JAVA (30)
        • PYTHON (9)
        • AWS (15)
        • DOCKER (2)
        • PERCONA (2)
        • ORACLE (14)
        • MYSQL (1)
        • 알고리즘 (0)
        • 기타 (11)
      • 툴 (5)
        • MARKDOWN (1)
        • GIT (1)
        • DOCKER (1)
        • PyCharm (2)
        • IntelliJ (0)
      • 일상 (35)
        • 맛집 (6)
        • 카페 (2)
        • 요리 (4)
        • 글씨 연습 (2)
        • 그저 일상 (7)
        • 내돈 내산 (11)
        • 홍보 (1)
      • 결혼준비 (1)
      • 국내 여행 (1)
      • 해외 여행 (15)
        • 체코-오스트리아 (10)
        • 일본 (5)
      • 암 일지 (26)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
    • 티스토리 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오닉스 리프3
    오라클
    재발
    자바JDBC
    히로시마
    체코
    저요오드식
    티스토리챌린지
    자바
    글씨연습
    jdbc
    오스트리아
    갑상선 암
    mysql
    오블완
    요양병원
    잘츠부르크
    Oracle
    성모샘쉼터
    동위원소
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
joolog
ORACLE - AUTO_INCREMENT 기능 구현

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.