sql >> Databasteknik >  >> RDS >> Oracle

Hur återställer jag en sekvens i Oracle?

Här är en bra procedur för att återställa valfri sekvens till 0 från Oracle-gurun Tom Kyte. Bra diskussion om för- och nackdelar i länkarna nedan också.

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

Från denna sida:Dynamisk SQL för att återställa sekvensvärde
En annan bra diskussion finns också här:Hur återställer man sekvenser?



  1. Introduktion till SQL Server Identity

  2. Hur får jag gem-installationen att fungera på OS X Lion med Ruby 1.8.7 utan att det blir fel?

  3. Basklass och härledda objektvarianter

  4. Vad är en "flerdelad identifierare" och varför kan den inte bindas?