DBMS

[DBMS/Oracle] 시퀀스(SEQUENCE)

elog 2023. 3. 17. 06:00

[DBMS/Oracle] 시퀀스(SEQUENCE)
[DBMS/Oracle] 시퀀스(SEQUENCE)

시퀀스(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