오라클에는 mysql처럼 auto_increment 기능이 없기 때문에 시퀀스를 생성해서 자동으로 인덱스 값을 증가시키도록 사용해야 한다.
예제 테이블로
create table tmp(
idx_tmp number(10),
name varchar(1000)
);
이렇게 만들어주고 idx_tmp에 auto_increment를 사용하기 위해 시퀀스를 생성한다.
CREATE SEQUENCE tmp_seq START WITH 1 INCREMENT BY 1 MAXVALUE 100 CYCLE NOCACHE;
tmp_seq라는 시퀀스를 생성한다.
여기서 사용할 수 있는 키워드.
MINVALUE는 시퀀스가 시작되는 최초의 숫자.
MAXVALUE는 시퀀스가 끝나는 최대 숫자.
INCREMENT BY는 시퀀스가 증가되는 단위
START WITH는 시퀀스 생성이 시작되는 값
NOCACHE는 캐시를 사용하지 않음 사용할 때는 CACHE n 이렇게 사용.
NOORDER는 요청되는 순서대로 값을 생성하지 않음. 병렬서버를 사용할 경우 요청 순서에 따라 정확하게 시퀀스를 생성하기를 원할 때 ORDER로 지정한다. 단일 서버일 경우 이 옵션과 관계 없이 정확히 요청 순서에 따라 시퀀스가 생성된다.
NOCYCLE은 초기값부터 다시 시작하지 않음. CYCLE로 지정하며 MAXVALUE에 도달 했을 때 다시 MINVALUE부터 시작하게 된다.
여기서 만든 tmp_seq는 1부터 시작해서 1씩 증가하며 100까지 증가하는 시퀀스이다.
100이 넘어가면 1로 다시 돌아가서 다시 시작한다.
INSERT INTO tmp values(tmp_seq.NEXTVAL, 'test1');
시퀀스를 사용한 값을 삽입한다. 이렇게 여러번 반복해서 insert해주면 계속해서 증가하는 값을 확인할 수 있다.
무한대값으로 설정하고 싶다면 NOMAXVALUE를 사용하면 된다. 이럴 경우 cycle은 NOCYCLE로 작성하거나 아예 빼면 된다.
[Oracle DB] 오라클 auto_increment (시퀀스)
Oracle 에서는 MySql에 있는 Auto_Increment 기능이 없다. 그렇기에 자동으로 인덱스값을 증가시켜주기 위해서는 시퀀스를 생성해서 사용해야한다. 1) 예제 테이블 생성 create table tmp( idx_tmp number(10), na..
luji.tistory.com
Oracle Sequence 만들기 (일련번호 생성하기)
데이터베이스에서 일련번호를 생성하는 것은 동시성 문제가 발생할 수 있어 간단한 작업이 아닙니다. 그래서 대부분의 데이터베이스에서는 일련번호 생성을 간단히 처리할 수 있는 기능들을 ��
offbyone.tistory.com
'DB' 카테고리의 다른 글
Oracle Scheduler, MySQL Event Scheduler (0) | 2022.04.21 |
---|---|
mysql 계층형 쿼리(함수, 재귀) (0) | 2022.04.04 |
EC2에 설치한 MySQL 데스크탑 workbench에서 접근 (0) | 2021.11.09 |
Oracle과 Tomcat충돌문제 해결 (0) | 2020.10.18 |
Oracle DataType (0) | 2020.10.17 |