12
votes

Oracle séquence commençant par 2 au lieu de 1

Comportement inattendu: strong>

Je rencontre un comportement étrange de séquences Oracle avec 11g (fonctionne avec 10g): P>

CREATE SEQUENCE test_sequence_2 START WITH 1;

SELECT test_sequence_2.NEXTVAL FROM dual

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


2 commentaires

Il renvoie 1 sur ma Oracle base de données 11G version 11.1.0.6.0 - 64 bits Production


@Quassnoi: Cela semble être une "fonctionnalité" de 11.2 (voir la réponse de Jeffrey). Merci d'avoir testé!


4 Réponses :


3
votes

Je ne peux pas reproduire sur 11g, c'est-à-dire. La table contient 1 après vos étapes suivantes.

Toutefois, il est discutable si cela devrait être considéré comme un "problème", car les séquences ne sont jamais garanties d'être exemptes de lacunes. Ce qui commence par les garanties, c'est que la séquence ne retournera jamais une valeur inférieure inférieure à la valeur de départ spécifiée - E.G. éviter les conflits avec les données existantes. Je suis d'accord cependant que ce que vous voyez est surprenant et je serais intéressé à connaître la raison!


0 commentaires

7
votes

Je dirais que la cause est cette "fonctionnalité non documentée". Voir mon document de support de support Oracle 1273858.1 (qui est malheureusement derrière un wwall et ne peut pas être copié ici).

Essayez-le sans création de segments différés et voyez si le problème persiste.


0 commentaires


2
votes

Utilisation:

CREATE SEQUENCE SQ_SEQUENCE_NAME
    INCREMENT BY 1
    START WITH 1
    MINVALUE 0  -- This will ensure start at 1!
    MAXVALUE 99
    NOCYCLE
    NOCACHE
    ORDER;


1 commentaires

Merci Dieu pour cette réponse, impossible de visualiser le message Jeffrey Kemp sinon sur une entreprise