DataBase/Oracle

Oracle 의 sequence 객체 사용하기

탑~! 2012. 5. 16. 17:01

시퀀스(SEQUENCE)란?

- 유일(UNIQUE)한 값을 생성해주는 오라클 객체이다.

- 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할수 있다.

- 대개 primary key 값을 생성하기 위해 사용한다.

- 메모리에 Cache되었을 때 Sequence 값의 액세스 효율이 증가한다.

- Sequence는 테이블과는 독립적으로 저장되고 생성된다. 따라서 하나의 sequence를
    여러 테이블에서 공유해서 쓸수 있다.

 

CREATE SEQUENCE sequenceName
[ INCREMENT BY integer]

[ START WITH  integer]
[ MAXVALUE integer | NOMAXVALUE ]
[ MINVALUE integer | NOMINVALUE ]
[ CYCLE | NOCYCLE ]

[ CACHE integer | NOCACHE ]
[ ORDER | NOORDER ] 

 

START WITH : 시퀀스의 시작 값.
INCREMENT BY : 시퀀스의 증가 값.
MAXVALUE INTEGER : 시퀀스가 증가할수 있는 최대값.
NOMAXVALUE       : 시퀀스의 값을 무한대로 지정.
MINVALUE INTEGER : 시퀀스의 최소값, 기본값은 1.
NOMINVALUE       : 시퀀스의 최소값을 무한대로 지정
CYCLE            : 최대값을 넘으면 다시 처음부터 순환
NOCYCLE          : 최대값이 넘어도 순환하지 않는다.

 

1) SEQUENCE의 생성
CREATE SEQUENCE TEST_SEQ
 
START WITH 1
 
MAXVALUE 99999
 
MINVALUE 1 
  NOCYCLE
  CACHE 20
  NOORDER;

2) SEQUENCE의 활용

SQL>INSERT INTO emp

        (empno, ename, hiredate )

         VALUES(TEST_SEQ.NEXTVAL, 'JHLEE' , sysdate);

CURRVAL : 현재 값을 반환 합니다. .
NEXTVAL : 현재 시퀀스값의 다음 값을 반환 합니다.

 

3)SEQUENCE의 변경

START WITH는 변경이 불가능하다.

SQL>ALTER SEQUENCE TEST_SEQ
         INCREMENT BY 2
         CYCLE;

 

4) SEQUENCE의 삭제

SQL>DROP SEQUENCE TEST_SEQ;  

 

 

출처 : http://blog.naver.com/PostPrint.nhn?blogId=pluggers&logNo=140018971749

728x90
반응형