How do I reset a sequence in Oracle?

后端 未结 18 1492
天命终不由人
天命终不由人 2020-11-22 05:09

In PostgreSQL, I can do something like this:

ALTER SEQUENCE serial RESTART WITH 0;

Is there an Oracle equivalent?

18条回答
  •  萌比男神i
    2020-11-22 05:27

    The following script set the sequence to a desired value:

    Given a freshly created sequence named PCS_PROJ_KEY_SEQ and table PCS_PROJ:

    BEGIN
       DECLARE
          PROJ_KEY_MAX       NUMBER := 0;
          PROJ_KEY_CURRVAL   NUMBER := 0;
       BEGIN
    
        SELECT MAX (PROJ_KEY) INTO PROJ_KEY_MAX FROM PCS_PROJ;
        EXECUTE IMMEDIATE 'ALTER SEQUENCE PCS_PROJ_KEY_SEQ INCREMENT BY ' || PROJ_KEY_MAX;
        SELECT PCS_PROJ_KEY_SEQ.NEXTVAL INTO PROJ_KEY_CURRVAL FROM DUAL;
        EXECUTE IMMEDIATE 'ALTER SEQUENCE PCS_PROJ_KEY_SEQ INCREMENT BY 1';
    
    END;
    END;
    /
    

提交回复
热议问题