상세 컨텐츠

본문 제목

Oracle 의 sequence 객체 사용하기

DataBase/Oracle

by 탑~! 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

'DataBase > Oracle' 카테고리의 다른 글

테이블 함수 예제  (0) 2012.05.18
Oracle 11g R2 다운로드  (0) 2012.05.17
Lock 걸린 Table 알아내기  (0) 2012.05.16
DUMMY 테이블을 활용한 데이타 조회  (0) 2012.05.16
Oracle 에서 Merge 구문 사용  (0) 2012.05.16

관련글 더보기