Sequence et oracle

Fermé
angélique - 13 janv. 2003 à 10:46
 dival - 14 juil. 2004 à 10:49
j'aimerais numéroter sous oracle une collone incrémenter de 1 mais il faudrait en plus que la numérotation s'innitialiser à 1 chaque mois
quelqu'un aurait-il une solution

2 réponses

Hello,

Tu peux créer une séquence :

CREATE SEQUENCE [nom_seq]
INCREMENT BY 1
START WITH 1
[NOORDER][ORDER]

exemple :

CREATE SEQUENCE MY_SEQ INCREMENT BY 1 START WITH 1

Et si tu veux l'initialiser à 1 chaque mois il faut que tu la delete et la recrée :

drop SEQUENCE [nom_seq]

exemple :

drop sequence MY_SEQ

Donc pour ajouter une valeur tu fais :

insert into maitre(cle, libelle) values(MY_SEQ . nextval, 'toto');

Tu peux reseter ta séquence avec une crontab ou la commande at afin d'automatiser cela.

le cycle habituel d'une séquence est l'option :

MINVALUE 1 MAXVALUE 99999999 CYCLE

mais dans ton cas pour remettre à zéro ton compteur il faut deleter ta séquence et la recrée.
0
Bonjour;
vous pouvez s'en passer de la séquence, en générant le code par programmation (c'est mieux).
sinon, vous pouvez le faire, en créant une séquence initialement, et pour nouveau mois vous pouvez la supprimer et la recréer par programmation en utilisant soit :
1. EXECUTE IMMEDIATE si votre programme est coté server
2. FORMS_DDL si votre programme est coté client (FORMS).
Bon courage
dival
0