Hi~ Summers!!

[oracle] INSERT 시 자동으로 시퀀스 증가 본문

개발/DB

[oracle] INSERT 시 자동으로 시퀀스 증가

eNaNII 2016. 11. 18. 16:12

INSERT 할 때마다 SEQ가 증가되야 할 때 그동안은  sequence.nexval 로 증가해 줬으나


TRIGGER를 이용해서 INSERT 할 때 자동으로 해당 컬럼에 증가값이 들어가도록 할 수 있다.


1. 예제 테이블 생성

1
2
3
4
5
6
CREATE TABLE departments (
  ID           NUMBER(10)    NOT NULL,
  DESCRIPTION  VARCHAR2(50)  NOT NULL);
 
ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID));
cs


2. 시퀀스 생성

1
CREATE SEQUENCE dept_seq START WITH 1;
cs


3. 트리거 생성

1
2
3
4
5
6
7
8
9
CREATE OR REPLACE TRIGGER dept_bir 
BEFORE INSERT ON departments 
FOR EACH ROW
 
BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
cs


4. 사용 예제

1
INSERT INTO departments (DESCRIPTION) VALUES ('설명123');
cs


※ Oracle 12C 에서는 아래처럼 쓴다.

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


Comments