[Oracle] 자동증가 Sequence

시퀀스란?
- 유일(UNIQUE)한 값을 생성해주는 오라클 객체입니다.
- 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할수 있습니다.
- 보통 primary key 값을 생성하기 위해 사용합니다.
- 메모리에 Cache되었을 때 Sequence 값의 액세스 효율이 증가 합니다.
- Sequence는 테이블과는 독립적으로 저장되고 생성됩니다. 따라서 하나의 sequence를 여러 테이블에서 쓸 수 있습니다.

START WITH : 시퀀스의 시작 값을 지정합니다. n을 1로 지정하면 1부터 순차적으로
시퀀스번호가 증가 합니다.

INCREMENT BY : 시퀀스의 증가 값을 말합니다. n을 2로 하면 2씩 증가합니다.
START WITH를 1로 하고 INCREMENT BY를 2으로 하면 1, 3, 5,7,.. 이렇게
시퀀스 번호가 증가하게 됩니다.

MAXVALUE n | NOMAXVALUE : MAXVALUE는 시퀀스가 증가할수 있는 최대값을 말합니다. NOMAXVALUE는 시퀀스의 값을 무한대로 지정합니다.

MINVALUE n | NOMINVALUE : MINVALUE는 시퀀스의 최소값을 지정 합니다.
기본값은 1이며, NOMINVALUE를 지정할 경우 최소값은 무한대가 됩니다



SQL>CREATE SEQUENCE emp_seq
START WITH 1
INCREMENT BY 1
MAXVALUE 100000 ;

sequence created.

시작 값이 1일고 1씩 증가하고, 최대값이 100000만이 되는 시퀀스를 생성했습니다.


SQL>INSERT INTO emp(empno, ename, hiredate ) VALUES(emp_seq.NEXTVAL, 'julia' , sysdate);

empno는 컬럼값을 입력할 때 일일이 다음 값을 기억하지 않아도 NEXTVAL을 사용하여
자동으로 입력할 수 있습니다.

CURRVAL : 현재 값을 반환 합니다. .
NEXTVAL : 현재 시퀀스값의 다음 값을 반환 합니다.


SQL>SELECT emp_seq.CURRVAL FROM DUAL ;

CURRVAL
---------
1

SQL>SELECT emp_seq.NEXTVAL FROM DUAL ;

NEXTVAL
---------
2




sequence 사용

+ CREATE SEQUENCE orders_seq
START WITH 1000
INCREMENT BY 1
NOCACHE
NOCYCLE;




시퀀스의 수정 및 삭제
START WITH는 수정할수 없습니다.
START WITH 절이 없다는 점을 빼고는 CREATE SEQUENCE와 같습니다.

SQL>ALTER SEQUENCE emp_seq
INCREMENT BY 2
CYCLE;

sequence altered.

2씩 증가하고, 최대값을 넘으면 다시 처음부터 순환하도록 수정하였습니다.

DROP 문을로 필요하지 않은 시퀀스는 삭제 할수 있습니다.

SQL>DROP SEQUENCE PRD_SEQ;
sequence dropped.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/10/08 16:39 2009/10/08 16:39
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/4701

Trackback URL : http://tcbs17.cafe24.com/tc/trackback/4701

« Previous : 1 : ... 301 : 302 : 303 : 304 : 305 : 306 : 307 : 308 : 309 : ... 1009 : Next »

블로그 이미지

- 홍반장

Archives

Recent Trackbacks

Calendar

«   2024/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Statistics Graph

Site Stats

Total hits:
240920
Today:
716
Yesterday:
856