[Oracle 기초] 숫자 자동 증가 (Auto Increment)
Mysql 이나 MariaDB에는 AUTO INCREMENT 기능이 있어, 지정한 Column이 지정된 값씩 증가하게 만들 수 있다.
하지만 Oracle은 AUTO INCREMENT 기능이 없기에 우리는 Sequence를 사용한다.
아래와 같은 테이블을 만든다고 하자.
1 2 3 4 5 | CREATE TABLE USER_TABLE ( USER_CODE NUMBER(5) NOT NULL, USER_NAME VARCHAR2(255) NOT NULL, CONSTRAINT USER_PK PRIMARY KEY (USER_CODE) ); |
그리고 우리는 유저가 회원가입을 할 때 마다 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 값이 일정하지 않을 수 있다.
'Oracle' 카테고리의 다른 글
[Oracle 기초] level을 이용한 날짜 및 시간 dummy 테이블 만들기 (0) | 2018.12.30 |
---|---|
[Oracle 기초] INSERT 에서 서브쿼리 사용하기 (0) | 2018.12.24 |
[Oracle 기초] sysdba 비밀번호 분실 (0) | 2018.12.24 |
[Oracle 기초] Oracle Client 제거 (0) | 2018.12.24 |
[Oracle 기초] EXISTS 기초 (0) | 2018.12.16 |