My SQL과 다르게 오라클에서는 Auto_Increment 명령어가 없다
그러므로 이 기능을 사용하기 위해서는 시퀀스를 생성해야한다.
Auto_Increment(인서트 자동증가) 시퀀스
CREATE SEQUENCE AAA START WITH 1 INCREMENT BY 1 MAXVALUE 100 CYCLE NOCACHE;
밑줄 그어진 부분은 시퀀스 명이니 자유롭게 사용해도 된다.
사용방법
CREATE TABLE A (
id number(10),
name VARCHAR2(200)
);
라는 테이블을 만들었고
이 테이블의 id라는 컬럼이 인서트가 될떄마다 자동 증가 되게 하고 싶다면
INSERT INTO board(id, name) values(AAA.NEXTVAL, 'aaa');
INSERT INTO board(id, name) values(AAA.NEXTVAL, 'bbb');
INSERT 문을 이렇게 구성하면 된다.
* 주의사항 : 시퀀스를 사용할 테이블은 시퀀스 보다 먼저 생성되어 있어야한다.
(시퀀스 생성 후의 시퀀스 사용 테이블을 생성하면 INSERT 시 카운트가 2부터 잡히는 경우가 발생)
초기화 방법
1) 시퀀스의 현재값
SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'AAA';
결과값 : 7
2) 시퀀스의 INCREMENT 를 현재 값만큼 빼도록 설정 (시퀀스의 맥스 값 을 만들어 줘야한다.)
(최대값이 100일 경우 현재 값이 7이 라면 -7을 하여 최대값으로 바꿔준다)
ALTER SEQUENCE AAA INCREMENT BY -7;
3) 시퀀스에서 다음 값을 가져 온다
SELECT AAA.NEXTVAL FROM DUAL;
결과값 : 100
4) 시퀀스 INCREMENT 값을 1로 설정한다.
ALTER SEQUENCE AAA INCREMENT BY 1;
'DB > 오라클 SQL 명령어' 카테고리의 다른 글
오라클 PK 제약조건 만들기 (0) | 2015.03.19 |
---|---|
오라클 DDL 정의 (0) | 2015.03.19 |
날짜 명령어 사용 예 (0) | 2015.03.16 |
날짜관련 명령어 (0) | 2015.03.16 |
NULL 치환 법 ( NVL & NVL2 ) OR DECODE (0) | 2015.03.16 |