Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie setze ich eine Sequenz in Oracle zurück?

Hier ist ein gutes Verfahren zum Zurücksetzen einer beliebigen Sequenz auf 0 von Oracle-Guru Tom Kyte. Tolle Diskussion über die Vor- und Nachteile auch in den Links unten.

[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;
/

Von dieser Seite:Dynamisches SQL zum Zurücksetzen des Sequenzwerts
Eine weitere gute Diskussion ist auch hier:Wie setzt man Sequenzen zurück?