[Oracle 기초] 숫자 자동 증가 (Auto Increment)

Posted by 열정보이
2018. 12. 24. 21:53 Oracle



Mysql 이나 MariaDB에는 AUTO INCREMENT 기능이 있어, 지정한 Column이 지정된 값씩 증가하게 만들 수 있다.


하지만 Oracle은 AUTO INCREMENT 기능이 없기에 우리는 Sequence를 사용한다.


아래와 같은 테이블을 만든다고 하자.


1
2
3
4
5
CREATE TABLE USER_TABLE (
USER_CODE NUMBER(5NOT NULL,
USER_NAME VARCHAR2(255NOT NULL,
CONSTRAINT USER_PK PRIMARY KEY (USER_CODE)
);

cs



그리고 우리는 유저가 회원가입을 할 때 마다 USER_CODE 값이 하나씩 증가하길 바라고 있다.

그럴 때, Sequence를 이용하면 된다.


1
CREATE SEQUENCE USER_SEQ START WITH 1 INCREMENT BY 1 MAXVALUE 9999 NOCYCLE NOCACHE;
cs


위와 같이 시퀀스를 제작해주자.


- START WITH 은 시작할 값

- INCREMENT BY 는 증가할 값

- MAXVALUE 는 최종 값

- MAXVALUE 이후 다시 1부터 시작을 원한다면 CYCLE을, 아닐 시 NOCYCLE

- CACHE를 이용할 경우는 CACHE, 아닐 시 NOCACHE 값을 주면 된다.


1
2
INSERT INTO USER_TABLE(USER_CODE, USER_NAME)
VALUES(USER_SEQ.NEXTVAL, 'eotlr');
cs

그리고 간략하지만 위와 같이 해당 Sequence 명.NEXTVAL 함수를 사용하면 USER_CODE 값이 중복되지 않고 증가하게 만들 수 있다.

Sequence는 일단 실행되면 값이 증가하기 때문에, 만약 중간에 회원가입의 실패 경우가 존재한다면, 회원과 회원 사이의 USER_CODE 값이 일정하지 않을 수 있다.