오라클 DBMS에서 AUTO_INCREMENT 사용 방법

오라클 11g에서는 auto_increment 또는 identity 컬럼을 사용할 수 없습니다. 하지만, 시퀀스(sequence)와 트리거(trigger)를 사용하여 쉽게 구현할 수 있습니다. 오라클 12c부터는 IDENTITY 컬럼을 사용할 수 있어 보다 간편하게 자동 증가 컬럼을 생성할 수 있습니다. 이 블로그 글에서는 두 가지 방법을 모두 다루겠습니다.

오라클 DBMS에서 AUTO_INCREMENTAUTO_INCREMENT 사용 방법

오라클 11g에서 시퀀스와 트리거를 이용한 AUTO_INCREMENT

먼저, 시퀀스를 생성하고 트리거를 사용하여 테이블에 자동 증가 기능을 추가하는 방법을 살펴보겠습니다.

1. 테이블 정의

CREATE TABLE departments (
  ID           NUMBER(10)    NOT NULL,
  DESCRIPTION  VARCHAR2(50)  NOT NULL
);

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID)
);

2. 시퀀스 생성

CREATE SEQUENCE dept_seq START WITH 1;

3. 트리거 정의

CREATE OR REPLACE TRIGGER dept_bir 
BEFORE INSERT ON departments 
FOR EACH ROW
BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
/

위와 같은 방법으로 오라클 11g에서도 AUTO_INCREMENT 기능을 사용할 수 있습니다.

오라클 12c에서 IDENTITY 컬럼 사용

오라클 12c부터는 IDENTITY 컬럼을 사용할 수 있어, 자동 증가 컬럼을 보다 쉽게 생성할 수 있습니다.

기본적인 IDENTITY 컬럼 사용

CREATE TABLE t1 (
    c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
    c2 VARCHAR2(10)
);

시작 값과 증가 값 설정, ALWAYS 옵션 사용

START WITHINCREMENT BY 옵션을 사용하여 시작 값과 증가 값을 설정할 수 있으며, GENERATED ALWAYS 옵션을 사용하여 IDENTITY 컬럼에 대한 수동 입력을 막을 수 있습니다.

CREATE TABLE t1 (
    c1 NUMBER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),
    c2 VARCHAR2(10)
);

오라클 12에서 시퀀스를 기본 값으로 사용

오라클 12에서는 시퀀스를 기본 값으로 설정하여 자동 증가 기능을 구현할 수도 있습니다.

1. 시퀀스 생성

CREATE SEQUENCE dept_seq START WITH 1;

2. 테이블 정의

CREATE TABLE departments (
  ID           NUMBER(10)    DEFAULT dept_seq.NEXTVAL NOT NULL,
  DESCRIPTION  VARCHAR2(50)  NOT NULL
);

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID)
);

결론

오라클 11g에서는 시퀀스와 트리거를 사용하여 자동 증가 기능을 구현할 수 있으며, 오라클 12c부터는 IDENTITY 컬럼을 사용하여 보다 간편하게 자동 증가 컬럼을 생성할 수 있습니다. 각각의 방법을 잘 활용하여 데이터베이스 설계를 효율적으로 할 수 있습니다.

이 글이 오라클 DBMS를 사용하는 데 도움이 되길 바랍니다. 더 많은 정보와 예제는 오라클 공식 문서를 참고하시기 바랍니다.