(DBMS/오라클) 시퀀스(SEQUENCE)


(DBMS/오라클) 시퀀스(SEQUENCE)
(DBMS/오라클) 시퀀스(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

** 시퀀스의 현재 값 다음 값을 나타냅니다.
. sequencename.NEXTVAL: 시퀀스의 다음 값 반환(시퀀스 값이 증가할 때 사용)
. sequencename.CURRVAL: 시퀀스의 현재 값을 반환합니다.
>> 시퀀스가 ​​생성된 후 첫 번째 명령은 “sequencename.NEXTVAL”이어야 합니다.
>> NEXTvAL, VURRVAL은 시퀀스의 의사 열이라고 합니다.

사용예)
  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','임산물');