[ORACLE] 시퀀스 값 초기화

Posted on 2021. 6. 15. 16:16
Filed Under DB

DROP SEQUENCE 하고 새로 만들면 쉽겠지만 권한문제로 DROP이 불가할때 사용할 수 있는 방법


--------------------------------------------------------------
--순번 1으로 초기화
DECLARE
  P_CURRVAL_NUM NUMBER;
BEGIN
    -- 1)시퀀스 현재값 얻기(초기화 할거니깐 .NEXTVAL 해버리자)
    SELECT 대상SEQ.NEXTVAL-1 INTO P_CURRVAL_NUM FROM DUAL;
    DBMS_OUTPUT.PUT_LINE('순번초기화 : '||P_CURRVAL_NUM);
    -- 2)증감값을 [-현재값]으로 조정
    EXECUTE IMMEDIATE 'ALTER SEQUENCE 대상SEQ INCREMENT BY -'||P_CURRVAL_NUM;
    -- 3)증감 실행
    SELECT 대상SEQ.NEXTVAL INTO P_CURRVAL_NUM FROM DUAL;
    --4)증감값 원복
    EXECUTE IMMEDIATE 'ALTER SEQUENCE 대상SEQ INCREMENT BY 1';
    
    --결과확인
    SELECT 대상SEQ.CURRVAL INTO P_CURRVAL_NUM FROM DUAL;
    DBMS_OUTPUT.PUT_LINE('-> '||P_CURRVAL_NUM);
END;

DBMS_OUTPUT 출력 창 보기: 메뉴 [보기] > DBMS 출력 > (출력창의)[+]버튼으로 Target DB설정

 

반응형

About

by 쑤기c

반응형