ドロップせずにシーケンス値を再初期化して再作成するにはどうすればよいですか?たとえば、現在のシーケンス値が3の場合、今度は1で再起動したいと思います。
このスレッド over Stack Overflowには、探している情報があります。主なオプションは2つあります。
シーケンスを削除して再作成する、または
トリックを使用して、トム・カイトの礼儀:
どちらか 1回限り :
alter sequence seq increment by {minus_the_current_value} minvalue 0;
または、これを定期的に行う必要がある場合は プロシージャを作成 できます。
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;
/