Oracle - Réinitialiser une séquence

Décembre 2016


Pour réinitialiser un séquence SEQ crée à travers la commande :
CREATE SEQUENCE SEQ;

Il suffit de voir sa valeur actuelle via la commande :
SELECT SEQ.CURRVAL FROM DUAL;

Ensuite modifier la séquence en injectant l'option increment by en ajoutant en valeur VAL -(la valeur actuelle - 1) pour réinitialiser la séquence à 1 :
ALTER SEQUENCE SEQ INCREMENT by -VAL;

Ensuite lancer la commande qui va réinitialiser la séquence :
SELECT SEQ.NEXTVAL FROM DUAL;

Enfin rétablir lincrement de la séquence de la séquence :
ALTER SEQUENCE SEQ INCREMENT by 1;


Exemple :
SQL> CREATE sequence seq;

Séquence créée.

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

Séquence modifiée.

SQL> select seq.nextval from dual;

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

SQL> alter sequence seq increment by 1;

Séquence modifiée.

A voir également :

Ce document intitulé «  Oracle - Réinitialiser une séquence  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.