Oracle - Reinicializar uma sequência

Março 2017


Para reinicializar uma sequência SEQ crie através do comando:
CREATE SEQUENCE SEQ;


Basta ver o seu valor atual, através do comando:
SELECT SEQ.CURRVAL FROM DUAL;


Em seguida, modificar a sequência adicionando a opção "increment by", agregando em valor VAL -(valor atual - 1) para reinicializar a sequência em 1 :
ALTER SEQUENCE SEQ INCREMENT by -VAL;


Depois, executar o comando que vai reinicializar a sequência:
SELECT SEQ.NEXTVAL FROM DUAL;


Enfim, reestabelecer o incremento da sequência da sequência:
ALTER SEQUENCE SEQ INCREMENT by 1;


Exemplo :
SQL> CREATE sequence seq;    

Sequência criada.    

SQL> SELECT seq.nextval from dual;    

   NEXTVAL    
----------    
         1    

SQL> select seq.nextval from dual;    

   NEXTVAL    
----------    
         2    

SQL> select seq.nextval from dual;    

   NEXTVAL    
----------    
         3    

SQL> select seq.currval from dual;    

   CURRVAL    
----------    
         3    

SQL> alter sequence seq increment by -2;  // 2=SEQ.CURRVAL-1    

Sequência alterada.    

SQL> select seq.nextval from dual;    

   NEXTVAL    
----------    
         1    

SQL> alter sequence seq increment by 1;    

Sequência alterada.



Tradução feita por Lucia Maurity y Nouira

Veja também

Artigo original publicado por . Tradução feita por pintuda.
Este documento, intitulado 'Oracle - Reinicializar uma sequência', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.