오라클 시퀀스 생성하기

15-12-03 by 최고관리자

 

1. 오라클 시퀀스 생성하기

    CREATE SEQUENCE 시퀀스명

 

CREATE SEQUENCE  시퀀스명  
        START WITH n   
        INCREMENT BY n 
        MAXVALUE n |  NOMAXVALUE 
        MINVALUE n | NOMINVALUE

위의 옵션에 대해서 추가 설명을 드리자면, 

 

START WITH n ▶ n = 초기화 값

INCREMENT BY n ▶ n = 증가값

MAXVALUE n ▶ n = 최대값 또는 NOMAXVALUE = 무한대 값

MINVALUE n ▶ n = 최소값 또는 NOMINVALUE = 무한대 값

 

을 의미한다.

 

그렇다면 이제 시퀀스 생성을 해보도록 하자 

 

시퀀스 명 = test_seq

초기값 = 1

증가값 = 1

최대값 = 10000

 

create sequence test_seq
  start with 1
  increment BY 1
  maxvalue 10000

 

 

2520AA4553E82C2F0CC1A5

 

위와같이 정상적으로 성공한 메시지가 출력되었다. 

생성한 시퀀스를 정상적으로 확인 하기 위해서 테이블을 하나 생성하여 시퀀스적용을 해보도록 하자

테이블 구조는 지난 포스팅인 MySQL에서의 시퀀스 샘플링 테이블과 같은구조로 생성 하겠다.

 

2014/08/11 - [DB/MySQL] - MySQL 시퀀스 auto_increment 생성 및 초기화하기

 

CREATE TABLE test_board(
  seq NUMBER NOT NULL PRIMARY KEY,
  title NVARCHAR2(20) NOT NULL
);

위와 같이 생성하였다면 seq 컬럼에 시퀀스를 적용해보도록 하겠다.

 

 

2328AD4353E831A227D524

 

 

insert문으로 시퀀스 + 데이터를 삽입한 후, select문을 통해 삽입된 데이터를 확인해보도록 하자

 

 

INSERT INTO test_board(seq,title)
VALUES(test_seq.nextval,'hello');

INSERT INTO test_board(seq,title)
VALUES(test_seq.nextval,'hello2');

INSERT INTO test_board(seq,title)
VALUES(test_seq.nextval,'hello3');

select * From test_board;

 

2629164553E832452459C8

 

위와같이 정상적으로 seq 컬럼이 자동증가 하였다.

 

2. 시퀀스 등록 

    테이블[자동증가컬럼명]-시퀀스명.NEXTVAL

 

3. insert문 실행 후 최종(현재) 시퀀스값 조회 

   SELECT 시퀀스명.CURRVAL FROM DUAL   

 

INSERT INTO test_board(seq,title)
VALUES(test_seq.nextval,'hello4');
select test_seq.currval from dual;

위와같은 방식으로 주어야한다.

select test_seq.currval from dual;

라고 줄경우에는 

ORA-08002: sequence TEST_SEQ.CURRVAL is not yet defined in this session

라는 오류 메시지가 나오는것을 확인 할 수 있을것이다.

 

4. 삽입없이 최종(현재) 시퀀스값 조회

   SELECT * 

     FROM USER_SEQUENCES 

   WHERE SEQUENCE_NAME = UPPER('시퀀스명')

select * 
from user_sequences 
where sequence_name=upper('test_seq');

라고 주면 다음과 같은 시퀀스 정보에 대해서 확인 할 수 있을 것이다.

 

 

2521B33753E838B128D1DD

 

    

LAST_NUMBER 컬럼이 현재 시퀀스 값을 의미 한다.

시퀀스 초기화 할시 현재 시퀀스를 DROP 하고 다시 생성을 해야 한다고 하더라...

물론 초기화(?) 는 가능하는데 일종의 꼼수라고 한다. 

시간이 나면 이부분에 대해서 포스팅을 하도록 하겠음.





Comments

  1. 등록된 코멘트가 없습니다.

Leave a Comment

자동등록방지 숫자를 순서대로 입력하세요.