시퀀스(SEQUENCE)
- 자동적으로 증가(감소)되는 값을 제공하는 객체
- 테이블과 독립적으로 동작하므로 여러 테이블에서공유할 수 있음
- 사용되는 곳
. 기본키로 설정할 컬럼이 존재하지 않는 경우
. 자동적으로 증가하는 값이 필요한 경우
사용형식)
CREATE SEQUENCE 시퀀스이름
[START WITH n] --시작 값 설정 생략하면 MINVALUE 값이 설정
[INCREMENT BY n] --증가[감소] 값
[MINVALUE n|NOMINVALUE] --최소값 설정.default는 NOMINVALUE이며 값은 1
[MAXVALUE n|NOMAXVALUE] --최대값 설정.default는 NOMAXVALUE이며 사용할 수 있는 값은 10^27
[CYCLE|NOCYCLE] --최대[최소]값까지 도달 후 다시 시퀀스 생성할지 여부 default는 NOCYCLE
[CACHE n|NOCACHE] --캐쉬에 생성해놓을 시퀀스 갯수 default는 CACHE 20
[ORDER|NOORDER] --정의한 대로 시퀀스 생성을 보증할 지 여부. default는 NOORDER
** 시퀀스의 현재 값 다음 값 참조
. 시퀀스명.NEXTVAL : 시퀀스의 다음 값 반환(시퀀스 값 증가시 사용)
. 시퀀스명.CURRVAL : 시퀀스의 현재 값 반환
>> 시퀀스가 생성된후 최초 명령은 "시퀀스명.NEXTVAL"이어야 함
>> NEXTvAL, VURRVAL을 시퀀스의 의사컬럼(Pseufo Column)이라 함
사용예)
CREATE SEQUENCE seq_sample
START WITH 10;
SELECT seq_sample.NEXTVAL FROM DUAL;
SELECT seq_sample.CURRVAL FROM DUAL;
사용예) 분류테이블에 다음 자료를 삽입하시오.
---------------------------------
LPROD_ID LPORD_GY LPROD_NM
---------------------------------
시퀀스사용 p501 농산물
" P502 수산물
" P503 임산물
.(시퀀스 생성:LPROD_ID에 사용)
CREATE SEQUENCE seq_lprod
START WITH 10;
.(자료 삽입)
INSERT INTO LPROD(LPROD_ID,LPROD_GU,LPROD_NM)
VALUES(seq_lprod.NEXTVAL,'p501','농산물');
INSERT INTO LPROD(LPROD_ID,LPROD_GU,LPROD_NM)
VALUES(seq_lprod.NEXTVAL,'p502','수산물');
INSERT INTO LPROD(LPROD_ID,LPROD_GU,LPROD_NM)
VALUES(seq_lprod.NEXTVAL,'p503','임산물');
'DBMS' 카테고리의 다른 글
[DBMS/Oracle] 인덱스(INDEX) (0) | 2023.03.17 |
---|---|
[DBMS/Oracle] 동의어(SYNONYM) (0) | 2023.03.17 |
[DBMS/Oracle] VIEW 객체 (0) | 2023.03.17 |
[DBMS/Oracle] Window 분석함수 (0) | 2023.03.16 |
[DBMS/Oracle] 집합 연산자 (0) | 2023.03.16 |