시퀸스 SEQUENCE

Oracle 2014. 11. 13. 15:09

SEQUENCE - 테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기, 시퀴스를 기본키로 사요앟면 사용자의 부담은 줄어듬. 

[형식] 

CREATE SEQUENCE sequence_name

[START WITH n]     //시퀸스 번호의 시작값

[INCREMENT BY n]  // 증가 값 

[{MAXVALUE n | NOMAXVALUE}] //시퀸스가 가질수 있는 최대값

[{MINVALUE n | NOMINVALUE}] //시퀸스가 가질수 있는 최소값 지정

[{CYCLE | NOCYCLE}]  //시퀸스 값이 최대갑증가를 완료하면 시작값으로 다시 시작

[{CACHE n | NOCACHE}]  //시퀸스의 기본값 20 , 윈칙적으로 메모리상에서 시퀸스 관리하지 않음


생성된 정보는 USER_SEQUENCE 에 저장됨

EX) DESC USER_SEQUENCES;

CURRVAL - 현재의 값을 가져옴

NEXTVAL - 다음값을 생성하여 그값을 CURRVAL 로 대처하고 값을 가져옴

EX) SELECT sequence_name.NEXTVAL FROM DUAL ;//증가한값//

EX) SELECT sequence_name.CURRVAL FROM DUAL;//현재값

주의사항)

사용할수 있는예

1.서브쿼리가 아닌 SELECT문

2.INSERT문의 SELECT절

3.INSERT문의 VALUE절

4.UPDATE문의 SET절

사용할수 없는 예

1.VIEW의 SELECT절

2.DISTINCT 키워드가 있는 SELECT문

3.GROUP BY,HAVING,ORDER BY절이 있는 SELECT문

4.SELECT.DELETE.UPDATE의 서브쿼리

5.CREATE TABLE,ALTER TABLE 명령의 DEFAULT값

사용시 겪는 문제

새로만든 SEQUENCE에 NEXTVAL을 사용하지 않고 바로 CURRVAL을 사용할시 NEXTVAL로 값을 생성하여 CURRVAL로대처하지 않았기때문에 값이 없어 오류가 남.반드시 NEXTVAL 사용후 사용할것.\

SEQUENCE 삭제

ex) DROP SEQUENCE sequence_name 

SEQUENCE 수정

EX) ALTER SEQUENCE sequence_name MAXVALUE 1000;





'Oracle' 카테고리의 다른 글

오라클 데이터베이스 보안 과 권한  (0) 2014.11.13
인덱스 INDEX  (0) 2014.11.13
가상 테이블 뷰  (0) 2014.11.13
오라클 데이터 읽기의 일관성과 락.  (0) 2014.11.12
오라클 트랜잭션 관리 ㅋ.ㅋ  (0) 2014.11.12
블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,