Oracle でシーケンスをリセットするにはどうすればいいですか? 質問する

Oracle でシーケンスをリセットするにはどうすればいいですか? 質問する

PostgreSQL、次のようなことができます:

ALTER SEQUENCE serial RESTART WITH 0;

Oracle に相当するものはありますか?

ベストアンサー1

Oracleの専門家による、シーケンスを0にリセットするための良い手順を紹介します。トム・カイト以下のリンクでも、長所と短所に関する素晴らしい議論が展開されています。

[email protected]> 
create or replace
procedure reset_seq( p_seq_name in varchar2 )
is
    l_val number;
begin
    execute immediate
    'select ' || p_seq_name || '.nextval from dual' INTO l_val;

    execute immediate
    'alter sequence ' || p_seq_name || ' increment by -' || l_val || 
                                                          ' minvalue 0';

    execute immediate
    'select ' || p_seq_name || '.nextval from dual' INTO l_val;

    execute immediate
    'alter sequence ' || p_seq_name || ' increment by 1 minvalue 0';
end;
/

このページから:シーケンス値をリセットする動的SQL
もう一つの良い議論はここにもあります:シーケンスをリセットするにはどうすればいいですか?

おすすめ記事