MySQL의 auto_increment와 같은 기능을 처리하는 두가지 방법
1. NVL 함수 이용
NVL 함수는 해당 컬럼의 값이 NULL인 경우 특정값으로 치환한다.
NVL('값', '지정값')
NVL(컬럼, 0) -- 해당 컬럼의 값이 NULL인 경우 0으로 치환
예제 테이블)
CREATE TABLE TMP(
IDX_NUM NUMBER(10),
NAME VARCHAR2(20)
);
insert) IDX_NUM 컬럼의 최대값에 +1 한 값을 IDX_NUM 값으로 삽입
만약 IDX_NUM 컬럼의 최대값이 NULL인 경우 0으로 치환하여 +1 해준다.
INSERT INTO TMP (IDX_NUM, NAME) VALUES (NVL((SELECT MAX(IDX_NUM) FROM TMP),0)+1, 'NAME');
조회 결과) IDX_NUM 값이 1만큼 증가하는 것 확인
2. 시퀀스 사용
예제 테이블)
CREATE TABLE TMP(
IDX_NUM NUMBER(10),
NAME VARCHAR2(20)
);
시퀀스 생성) TMP_SEQ 시퀀스는 1부터 시작하여 1씩 증가하며 100까지 도는 시퀀스
CREATE SEQUENCE TMP_SEQ START WITH 1 INCREMENT BY 1 MAXVALUE 100 CYCLE NOCACHE;
CREATE SEQUENCE “스키마명.시퀀스명”
속성 | 의미 |
MINVALUE | 시퀀스가 시작되는 최초의 숫자 |
MAXVALUE | 시퀀스가 끝나는 최대 숫자 |
INCREMENT BY | 시퀀스가 증가되는 단위 |
START WITH | 시퀀스 생성이 시작되는 값 |
NOCACHE | 캐시를 사용하지 않음 |
NOORDER | 요청되는 순서대로 값을 생성하지 않음 |
NOCYCLE | 초기값부터 다시 시작하지 않음 |
insert)
INSERT INTO TMP VALUES (TMP_SEQ.NEXTVAL, 'NAME');
조회 결과) IDX_NUM 값이 1만큼 증가하는 것 확인
시퀀스 삭제) 테이블 삭제와 동일
DROP SEQUENCE TMP_SEQ;
'개발 공부 > DataBase' 카테고리의 다른 글
[NoSQL] Mongo DB 사용 사례 - KAKAO (0) | 2022.02.28 |
---|---|
[MongoDB] MongoDB 용어 정리 + 설계 방법 (0) | 2022.02.17 |
[DB] SQL vs NoSQL - 개념 및 차이 (0) | 2022.02.15 |
[Oracle] 날짜형 타입 변환 to_date() (0) | 2021.07.31 |