IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[Débutant] Autoincrémentation sous Oracle


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 28
    Points
    28
    Par défaut [Débutant] Autoincrémentation sous Oracle
    Bonjour, je pose une question qui doit pourtant être facile mais malgré mes essais, je ne comprends pas comment faire une auto-incrémentation sous Oracle

    Voici ma table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    (Create table Exemplaire
    	NumeroInventaire int,
    	ISBN varchar(15),
    	EtatEmprunte int default(0),
    	constraint PKExemplaire primary key(NumeroInventaire, ISBN),	
    	constraint FKExemplaire foreign key (ISBN) references Livre(ISBN) initially deferred,
    	constraint CBoolean CHECK  (EtatEmprunte between 0 AND 1)
    );
    J'ai trouvé un exemple sur le net, mais je ne le comprends, et je sais pas comment l'adapter à ma table. Ca doit pourtant être facile.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE test (id NUMBER PRIMARY KEY, name VARCHAR2(30));
     
    CREATE SEQUENCE test_sequence
    START WITH 1
    INCREMENT BY 1;
     
     
    CREATE OR REPLACE TRIGGER test_trigger BEFORE INSERT ON test
    REFERENCING NEW AS NEW
    FOR EACH ROW
    BEGIN
    SELECT test_sequence.nextval INTO :NEW.ID FROM dual;
    END;
    A aucun moment, on ne dit que c'est le champ id qu'il faut augmenter.

    Merci de votre aide

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Points : 121
    Points
    121
    Par défaut
    Les incrémentations sous Oracle se font avec des objets que l'on appel des sequences

    Comme cité dans ton exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE SEQUENCE test_sequence
    START WITH 1
    INCREMENT BY 1;
    Pour incrémenter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT test_sequence.NEXTVAL from dual;
    Pour afficher la valeure actuelle de la séquence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT test_sequence.CURVAL from dual;
    Tu peux parametrer ta séquence avec pas mal de parametres, aussi je t'invite a faire une recherche !

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    bonjour,
    moi je fais exactement la meem chose sans faire de trigger dans un premier dtemps mais ca marche pas...

    je crée ma_seq de la meme facon.
    quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ma_seq.nextval from dual;
    c'est nikel ca increment bien de un.
    Mais quand fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into test values(ma_seq.nextval,'test');
    ca incremente dans ma table :
    1
    21
    41
    ...

    quelqu'un c'est-il pourquoi?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    bjr.
    tu peux nous montrer le code que ta utilisé pour créer ta sequence. il me semble que ta séquence s'incrémente d'un pas=20 à chaque fois.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    jai bien fait un increment by 1.
    j'ai toute refait en ligne de command et maintement ca marche....

    bizarre mais c'est ok maitenant merci quand meme.

Discussions similaires

  1. [Débutant] Insertions sous Oracle Enterprise Manager 10g
    Par Raumsog dans le forum Administration
    Réponses: 7
    Dernier message: 18/12/2007, 09h27
  2. Pas de JOIN sous Oracle (vraiment dommage...)
    Par Isildur dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/03/2007, 11h28
  3. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 18h24
  4. [Débutant] SWT sous Eclipse 3.0
    Par bonnefr dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 11/05/2004, 16h01
  5. Réponses: 7
    Dernier message: 08/08/2003, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo