Sequence 란?
- Oracle 내부에서 순차적으로 증가되는 값을 가지는 유일(Unique) 객체임.
- 시퀀스를 생성하게 되면 이것을 이용하여 순차적으로 증가되는 관리번호같은 것등을 자동생성함.
- 메모리에 cache되었을때에 Sequence 값의 액세스 효율이 증가함.
- 테이블과 독립적으로 생성되므로 여러테이블에서 사용될수 있음.
---------------------------------------------------------------------------
SEQUENCE 생성 구문:
---------------------------------------------------------------------------
CREATE SEQUENCE [시퀀스이름]
START WITH [n]
INCREMENT BY [n]
MAXVALUE [n] | NOMAXVALUE
MINVALUE [n] | NOMINVALUE
CYCLE | NOCYCLE
- START WITH [n] - n으로 시퀀스 시작값을 설정한다.
- INCREMENT BY [n] - n 만큼 시퀀스가 증가한다.
- MAXVALUE, MINVALUE - 지정된 숫자만큼 최대값 최소값이 정해진다.
테이블을 운영하다보면 어떠한 필드가 1씩 증가해야 하는 상황이 필요하다. 이러한 경우 사용하는 방식으로 sequence 를 만들어서 사용하는 방식이 있다.
다음은 1 부터 시작하여 한번에 1씩 증가하는 sequence 를 생성한다.
create sequence autonum
increment by 1 -- 1씩 증가하라는거고요
start with 1 -- 1부터 시작이고요 100 시작할려면 100 이라고 쓰시면 됩니다.
nomaxvalue -- 최대값 제한이 없다
nocycle
nocache;
간단하게 1부터 1씩 증가를 원하면 다음과 같이 사용해도 된다.
create sequence friend_seq;
--> 기본적으로 1부터 시작하여 1씩 증가하게 된다.
접근:
-- 시퀀스명.nextval
-- 시퀀스명.curval
insert into friend values(friend_seq.nextval,'박신양','노래');
insert into friend values(friend_seq.nextval,'장동건','수영');
유의할 사항은
- 시퀀스명.Nextval 하면 전에 값으로 되돌릴수 없습니다.
└> 해결책: 삭제하고 다시 만들어줘야 함!
SEQUENCE 삭제(필요시)
drop sequence member_seq;
drop sequence friend_seq;
참조 : http://opensourceforge.tistory.com/264

