시퀀스란?
- 테이블 내의 유일한 숫자를 자동으로 생성시켜 주는 역할을 합니다.
- 오라클에서 무결성을 위해 유일한 값을 가져야할 경우, 사용자의 부담을 덜어낼 수 있습니다.
그럼 시퀀스의 형식에 대해서 알아볼까요?
-
CREATE SEQUENCE sequence_name
-
[START WITH n]
-
[INCREMENT BY n]
-
[{MAXVALUE n | NOMAXVALUE}]
-
[{MINVALUE n | NOMINVALUE}]
-
[{CYCLE | NOCYCLE}]
-
[{CACHE n | NOCACHE}]
-
START WITH n : 시퀀스 번호의 시작을 지정합니다.
INCREMENT BY n : 연속적인 시퀀스 번호의 증가치를 지정할 때 사용됩니다.
MAXVALUE n : 시퀀스의 최대값을 지정합니다.
MINVALUE n : 시퀀스의 최소값을 지정합니다.
CYCLE : 시퀀스 값이 최대값까지 증가되고 나면 START WITH에서 지정한 시작 값으로 시퀀스를 다시 시작합니다.
CACHE n : 메모리상에서 시퀀스 값을 관리하도록 하는 것으로 기본 값은 20입니다.
자 그럼 시퀀스를 생성하는 예제를 보실까요?
-
CREATE SEQUENCE Seq_Test
-
INCREMENT BY 1
-
START WITH 1;
시퀀스가 생성된 것이 보이실겁니다. ㅎㅎㅎ
이제는 생성된 시퀀스를 사용해 볼까요?
우선은 CURRVAL, NEXTVAL을 알아봐야합니다.
CURRVAL : 시퀀스의 현재 값을 알아내기 위해서 사용됩니다.
NEXTVAL : 시퀀스의 새로운 값을 할당 합니다.
CURRVAL 과 NEXTVAL을 사용가능한 경우와 사용가능하지 않은 경우를 알아보겠습니다.
●사용 가능한 경우
- 서브 쿼리가 아닌 SELECT 문
- INSERT문의 SELECT 절
- INSERT 문의 VALUE 절
- UPDATE 문의 SET 절
●사용이 불가능한 경우
- VIEW의 SELECT절
- DISTINCT 키워드가 있는 SELECT문
- GROUP BY, HAVING, ORDER BY 절이 있는 SELECT문
- SELECT, DELETE, UPDATE의 서브 쿼리
- CREATE TABLE, ALTER TABLE 명령의 DEFAULT 값
자 그럼 실제로 사용하는 예제를 진행하겠습니다.
-
INSERT INTO Index_Test VALUES(SEQ_TEST.NEXTVAL, '열청', 'SKAWKSLRK',SYSDATE);
INDEX_TEST테이블은 바로 전 포스팅의 테스트용으로 만든 테이블입니다.
우선 여기에는 데이터가 하나 들어있어서
시퀀스의 START WITH를 2로 바꾸어 진행했습니다.
결과를 보시면 제대로 시퀀스가 적용된 것을 보실수 있으실겁니다.
시퀀스를 삭제 하고 싶으시면,
-
DROP SEQUENCE 시퀀스 이름;
위와 같이 해주시면 해당 시퀀스가 삭제 됩니다.
출처 : http://blog.naver.com/skawkslrk87/70170778269
'Skills > Database' 카테고리의 다른 글
TO_CHAR 에 대한 문제점 (0) | 2014.06.27 |
---|---|
[Oracle] Sequence (0) | 2014.06.27 |
[Oracle] CREATE 테이블을 만들어 보자 (0) | 2014.06.27 |
오라클 원격 접속하기 - TNSListener service (0) | 2014.06.27 |
[DB-Oracle] 오라클 계정 생성, 삭제, 시스템 패스워드 변경 (0) | 2014.06.27 |
댓글