Saltar al contenido

¿Cómo restablezco una secuencia en Oracle?

Ten en cuenta que en las ciencias cualquier problema casi siempere suele tener diferentes soluciones, así que nosotros aquí mostramos lo más óptimo y mejor.

Solución:

Aquí hay un buen procedimiento para restablecer cualquier secuencia a 0 del gurú de Oracle Tom Kyte. Gran discusión sobre los pros y los contras en los enlaces a continuación también.

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

Desde esta página: SQL dinámico para restablecer el valor de la secuencia
Otra buena discusión también está aquí: ¿Cómo restablecer secuencias?

A true reiniciar no es posible AFAIK. (¡Por favor corrígeme si estoy equivocado!).

Sin embargo, si desea establecerlo en 0, simplemente puede eliminarlo y volver a crearlo.

Si desea establecerlo en un valor específico, puede establecer el INCREMENTO en un valor negativo y obtener el siguiente valor.

Es decir, si su secuencia está en 500, puede establecerla en 100 a través de

ALTER SEQUENCE serial INCREMENT BY -400;
SELECT serial.NEXTVAL FROM dual;
ALTER SEQUENCE serial INCREMENT BY 1;

Este es mi enfoque:

  1. soltar la secuencia
  2. recrearlo

Ejemplo:

--Drop sequence

DROP SEQUENCE MY_SEQ;

-- Create sequence 

create sequence MY_SEQ
minvalue 1
maxvalue 999999999999999999999
start with 1
increment by 1
cache 20;

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *