Published 2022. 11. 25. 17:20

< 시퀀스 SEQUENCE >


   자동으로 숫자 발생시켜주는 역할을 하는 객체 
   정수값을 순차적으로 일정값씩 증가시키면서 생성해줌 
   
   EX) 회원번호, 사원번호, 게시글번호, ... 

 

 1. 시퀀스 객체 생성(CREATE)
   
    [표현법]
    CREATE SEQUENCE 시퀀스명 
    [START WITH 시작숫자]      --> 처음발생시킬 시작값 지정 (기본값 1)
    [INCREMENT BY 숫자]        --> 몇 씩 증가시킬건지 (기본값 1)
    [MAXVALUE 숫자]                --> 최대값 지정 (기본값 겁나큼)
    [MINVALUE 숫자]                 --> 최소값 지정 (기본값 1) 
    [CYCLE | NOCYCLE]           --> 값 순환 여부 지정 (기본값 NOCYCLE)
    [NOCACHE | CACHE 바이트 크기]  --> 캐시메모리 할당 (기본값 CACHE20)
    
    * 캐시메모리 : 미리 발생될 값들을 생성해서 저장해두는 공간 
                 매번 호출할때마다 새로이 숫자를 생성하는게 아니라 
                 캐시메모리 공간에 미리 생성된 값들을 가져오기 때문에 속도가 빨라짐
                 접속이 해제되면 캐시메모리에 미리 만들어둔 번호가 날라감 
              

CREATE SEQUENCE SEQ_EMPNO
START WITH 300 
INCREMENT BY 5
MAXVALUE 310
NOCYCLE
NOCACHE;

 

 2. 시퀀스 사용 (즉, 숫자 발생)
    
     시퀀스명.CURRVAL : 현재 시퀀스의 값 (마지막으로 성공적으로 수행된 NEXTVAL)
     시퀸스명.NEXTVAL : 일정값을 증가시켜서 새로이 발생된 값 
                                        현재 시퀀스 값에 INCREMENT BY값 만큼 증가된 값 
  

SELECT SEQ_EMPNO.CURRVAL FROM DUAL; 
--> 오류 (NEXTVAL를 수행하지 않으면 CURRVAL을 사용할 수 없음 
--> 이유 : CURRAVAL은 마지막으로 성공적으로 수행된 NEXTVAL의 값을 임시 보관하고 있는 값이기때문에

SELECT SEQ_EMPNO.NEXTVAL FROM DUAL; -- 300
SELECT SEQ_EMPNO.CURRVAL FROM DUAL; -- 300

 

3. 시퀀스 변경 (ALTER)
    
    ALTER SEQUENCE 시퀀스명
    [INCREMENT BY 증가값]
    [MAXVALUE 최대값]
    [MINVALUE 최소값]
    [CYCLE | NOCYCLE]
    [NOCACHE | CACHE 바이트크기];
    
    * START WITH 변경 불가능 
       

ALTER SEQUENCE SEQ_EMPNO
INCREMENT BY 10
MAXVALUE 400;

  

4. 시퀀스 삭제 (DROP)

DROP SEQUENCE SEQ_EMPNO;

 

예시)  사번으로 활용할 시퀀스 생성 (INSERT문에서 활용)

CREATE SEQUENCE SEQ_EID
START WITH 300
NOCACHE;
INSERT 
  INTO EMPLOYEE
       (
         EMP_ID
       , EMP_NAME
       , EMP_NO
       , JOB_CODE
       , HIRE_DATE
       )
  VALUES     
       (
         SEQ_EID.NEXTVAL
        , '홍길동'
        , '111111-1111111'
        , 'J7'
        , SYSDATE
        );

 

'ORACLE' 카테고리의 다른 글

ORACLE 13. PLSQL _반복문  (0) 2022.11.25
ORACLE 13. PLSQL _조건문  (0) 2022.11.25
ORACLE 11. OBJECT (VIEW) _ VIEW 옵션  (0) 2022.11.24
ORACLE 11. OBJECT (VIEW) _ DML  (0) 2022.11.24
ORACLE 11. OBJECT (VIEW)  (0) 2022.11.24
복사했습니다!