How do I reset a sequence in Oracle?

后端 未结 18 1500
天命终不由人
天命终不由人 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条回答
  •  无人共我
    2020-11-22 05:43

    I create a block to reset all my sequences:

    DECLARE
        I_val number;
    BEGIN
        FOR US IN
            (SELECT US.SEQUENCE_NAME FROM USER_SEQUENCES US)
        LOOP
            execute immediate 'select ' || US.SEQUENCE_NAME || '.nextval from dual' INTO l_val;
            execute immediate 'alter sequence ' || US.SEQUENCE_NAME || ' increment by -' || l_val || ' minvalue 0';
            execute immediate 'select ' || US.SEQUENCE_NAME || '.nextval from dual' INTO l_val;
            execute immediate 'alter sequence ' || US.SEQUENCE_NAME || ' increment by 1 minvalue 0';
        END LOOP;
    END;
    

提交回复
热议问题