블로그 이미지
가야금마스터

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

Tag

2015. 3. 19. 11:47 DB/오라클 SQL 명령어

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
posted by 가야금마스터