Oracle - Réinitialiser une séquence

Publié par wjaouadi - Dernière mise à jour le 3 novembre 2009 à 13:00 par marlalapocket

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.