[ORALCE] 시퀀스가 감소할 때, 다음 채번 값은 어떻게 될까? 양수/음수 케이스별 테스트


    일반적으로 시퀀스는 양수로 증가하는 경우가 대부분이지만 특별한 경우에 따라 감소 시퀀스를 사용해야 할 때가 있습니다. 
    이번 글은 감소 시퀀스(INCREMENT BY < 0) 상황에서 채번 값이 양수와 음수 범위에서 어떻게 변하는지 테스트 입니다.

    감소 시퀀스 테스트

    음수 상황(SEQ1): -1 -> -999로 감소
    양수 상황(SEQ2): 999 -> 1로 감소
    
    -- 시퀀스 현황 조회
    SELECT * FROM DBA_SEQUENCES
    WHERE 1=1
    AND SEQUENCE_NAME IN ('SEQ1','SEQ2');
     
    SEQUENCE_OWNER                 SEQUENCE_NAME                  MIN_VALUE          MAX_VALUE          INCREMENT_BY             CYCLE_FLAG           ORDER_FLAG           CACHE_SIZE           LAST_NUMBER           
    ------------------------------ ------------------------------ ------------------ ------------------ ------------------------ -------------------- -------------------- -------------------- ----------------------
    SYSTEM                         SEQ1                                         -999                 -1                       -1 N                    N                                      20                     -1
    SYSTEM                         SEQ2                                            1                999                       -1 N                    N                                      20                    999
     
    2 rows selected.
     
    -- 시퀀스 채번
    SELECT SYSTEM.SEQ1.NEXTVAL SQ1_NEXT, SYSTEM.SEQ2.NEXTVAL SQ2_NEXT FROM DUAL;
     
    SQ1_NEXT         SQ2_NEXT        
    ---------------- ----------------
                  -1              999
     
    1 rows selected.
     
    SELECT SYSTEM.SEQ1.CURRVAL SQ1_CUR, SYSTEM.SEQ2.CURRVAL SQ1_CUR FROM DUAL;
     
    SQ1_CUR        SQ1_CUR       
    -------------- --------------
                -1            999
     
    1 rows selected.
     
    -- 시퀀스 현황 조회
    SELECT * FROM DBA_SEQUENCES
    WHERE 1=1
    AND SEQUENCE_NAME IN ('SEQ1','SEQ2');
     
    SEQUENCE_OWNER                 SEQUENCE_NAME                  MIN_VALUE          MAX_VALUE          INCREMENT_BY             CYCLE_FLAG           ORDER_FLAG           CACHE_SIZE           LAST_NUMBER           
    ------------------------------ ------------------------------ ------------------ ------------------ ------------------------ -------------------- -------------------- -------------------- ----------------------
    SYSTEM                         SEQ1                                         -999                 -1                       -1 N                    N                                      20                    -21
    SYSTEM                         SEQ2                                            1                999                       -1 N                    N                                      20                    979
     
    2 rows selected.
     
    -- 시퀀스 한번 더 채번
    select SYSTEM.seq1.nextval sq1_next, SYSTEM.seq2.nextval sq2_next from dual;
     
    SQ1_NEXT         SQ2_NEXT        
    ---------------- ----------------
                  -2              998
     
    1 rows selected.
     
    SELECT SYSTEM.SEQ1.CURRVAL SQ1_CUR, SYSTEM.SEQ2.CURRVAL SQ1_CUR FROM DUAL;
     
    SQ1_CUR        SQ1_CUR       
    -------------- --------------
                -2            998
     
    1 rows selected.
    

    Post a Comment

    다음 이전