SEQUENCE 객체

조수경·2021년 10월 28일
0

Oracle

목록 보기
13/19

SEQUENCE 객체

  • 자동으로 증가(감소)되는 숫자를 생성시키는 객체
  • 일부 다른 DBMS에서는 숫자컬럼의 속성 중 AUTO INCREMENT 속성으로 구현됨
  • 오라클에서는 테이블과 독립된 객체로 제공
    (사용형식)
    CREATE SEQUENCE 시퀀스명
    [START WITH n] -- 시작 값, 기본은 MIN_VALUE(최소값)
    [INCREMENT BY n] --증감값(차례로 증가하는 것이 아니라 10씩 증가처럼 증가)
    [MAXVALUE n|NOMAXVALUE] --최대값, 기본은 NOMAXVALUE이고 -(10^27)까지 사용
    [MINVALUE n|NOMINVALUE] --최소값, 기본은 NOMINVALUE이고 그 값은 1
    [CYCLE|NOCYCLE] --최대(최소)값까지 도달 후 다시 SEQUENCE 생성여부 기본은 NOCYCLE
    [CACHE n|NOCACHE] --캐시에 미리 만들어 놓고 사용할지 여부 / 기본은 CACHE 20
    [ORDER|NOORDER] --(명령)시퀀스 객체 생성을 보증할지 여부 기본은 NOORDER **시퀀스 객체의 Pseudo Column(의사컬럼) -- 가상 컬럼
    Pseudo Column 내용
    시퀀스명.CURRVAL 시퀀스객체의 현재 값
    시퀀스명.NEXTVAL 시퀀스객체의 다음 값
    ***해당 세션에서 시퀀스 객체는 적어도 한 번이상의 .NEXTVAL(다음값 생성)이 수행된 후
    CURRVAL(다음 값을 참조하는 것/ 현재 값 반환)에 값이 배정됨 --CURRVAL먼저 배정하면 오류가 남
      사용예) LPROD테이블에 신규 분류코드를 추가 삽입하기 위한 시퀀스를 생성하고 다음 분류코드를 추가 삽입하시오.
             시퀀스는 LPROD_ID 데이터로 사용
             [자료]
             LPROD_GU : 'P501'
             LPROD_NM : '농산물'
             
             LPROD_GU : 'P502'
             LPROD_NM : '임산물'
             
      (시퀀스 생성)
      CREATE SEQUENCE SEQ_LPROD_ID
       START WITH 10;
       
       SELECT SEQ_LPROD_ID.NEXTVAL FROM DUAL;
       SELECT SEQ_LPROD_ID.CURRVAL FROM DUAL; --.NEXTVAL먼저 생성후 실행 되야 함
       
       --CURRVAL
       INSERT INTO LPROD
       VALUES(SEQ_LPROD_ID.CURRVAL,'P501','농산물');
       
       SELECT * FROM LPROD;
     
       --NEXTVAL 
       INSERT INTO LPROD
       VALUES(SEQ_LPROD_ID.NEXTVAL,'P502','임산물');
       
       SELECT * FROM LPROD;
       
       
       
       
       
       
       
profile
신입 개발자 입니다!!!

0개의 댓글