Oracle - Réinitialiser une séquence


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.
Cet article est régulièrement mis à jour par des experts sous la
direction de Jean-François Pillou, fondateur de CommentCaMarche.
A voir également
Ce document intitulé « Oracle - Réinitialiser une séquence » issu de Comment Ça Marche (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.