시퀀스(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
테이블 함수 예제 (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 |