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

Administration Oracle Discussion :

Saut d'increment avec une séquence


Sujet :

Administration Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Saut d'increment avec une séquence
    J'ai un incrément de séquence de 3 à chaque utilisation de cette séquence, alors que j'ai créé ma séquence ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create sequence SEQ_SUIVOLEO_ORIGORDNO
           start with 1
           maxvalue 99999
           minvalue 1
           nocache
    (increment by 1 par défaut normalement)

    Merci de votre aide...

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Et si tu la recrées en précisant bien le increment by 1 ?

    Sinon es-tu le seul à y accéder ? Es-tu sûr de ne pas y accéder 3 fois à chaque lecture ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Réponse à Nuke y
    Nuke,

    L'increment est bien à 1, vérifier avec select * from all_sequences :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SEQUENCE_OWNER                 SEQUENCE_NAME                   MIN_VALUE
    ------------------------------ ------------------------------ ----------
     MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
    ---------- ------------ - - ---------- -----------
    RCS                            SEQ_SUIVOLEO_ORIGORDNO                  1
         99999            1 N N          0          16
    et je suis seul à utiliser la séquence à ce moment_là...

    Merci encore

  4. #4
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    et comment est-ce que tu l'utilises ?
    c'est vite fait d'avoir mis l'affectation d'un No de séquence DANS un Loop au lieu d'en dehors...

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Points : 279
    Points
    279
    Par défaut
    Oracle ne garanti pas la continuité des sequences, seulement leur unicité.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 95
    Points
    95
    Par défaut
    Est-ce que tu aurais le code avec lequel tu déclenches ta séquence ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Salut tlm

    Voila j'ai créé un sequence reserv_seq (voir code ci dessous)
    Lors de l’ajout d’un record dans une table ma_table, j'aimerais utuliser la séquence reserv_seq pour remplir un champ id_personne qui est la clé primaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    CREATE SEQUENCE reserv_seq
    	START WITH     1000
    	INCREMENT BY   1
    	MAXVALUE        99999
    	NOCYCLE
    	NOCACHE;
    Quelqu'un pourrait me donner un exemple?

    merci

  8. #8
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    insert into ma_table
    	( id_personne
    	, autre_1
    	, autre_2
    	, ...
    	)
    values
    	( reserv_seq.nextval
    	, Valeur pour autre_1
    	, Valeur pour autre_2
    	, ...
    	) ;

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    merci yorgla

    Pourrais aussi le faire grace un trigger qui mettrait a jour le champ id_reservation automatiqument grace a la séquence
    j'essaie ceci mais ça ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    create or replace trigger tg4_inc_id_reservation
    before insert on voyages
    for each row
    declare
    begin 
     select reserv_seq.nextval
       into :new.id_reservation from voyages
    end tg4_inc_id_reservation;
    j'utilise toad et il me dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: TRIGGER created with compilation errors.
    Que devrais je corrige le cas échaant?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 349
    Points : 409
    Points
    409
    Par défaut
    entre autres , remplacer ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT reserv_seq.NEXTVAL
       INTO :new.id_reservation FROM voyages
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT reserv_seq.NEXTVAL
       INTO :new.id_reservation FROM DUAL

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    trigger rectifié avec dual mais tjs meme message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE OR REPLACE TRIGGER tg4_inc_id_reservation
    before INSERT ON voyages
    FOR each row
    declare
    begin 
     SELECT reserv_seq.NEXTVAL
       INTO :new.id_reservation FROM DUAL
    end tg4_inc_id_reservation;
     
     
    Warning: TRIGGER created with compilation errors.

  12. #12
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    AFTER INSERT non ?

    sinon, attention si tu sélectionnes NEXTVAL la séquence est incrémentée même si tu fais un ROLLBACK.

  13. #13
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Non, ça marche très bien before-insert...

    à skinpo
    le point-virgule est obligatoire après chaque instruction tu sais...


    PS:
    si tu es en sqlplus utilise la commande "show errors" dés que tu as le warning "Avertissement : Déclencheur créé avec erreurs de compilation" sinon tu vas pas t'en sortir....

  14. #14
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par remi4444
    si tu es en sqlplus utilise la commande "show errors" dés que tu as le warning "Avertissement : Déclencheur créé avec erreurs de compilation" sinon tu vas pas t'en sortir....
    Et en plus c'est bien plus formateur de corriger ses erreurs que de demander aux autres de le faire

Discussions similaires

  1. problème avec une séquence
    Par mariek dans le forum Requêtes
    Réponses: 5
    Dernier message: 25/10/2010, 14h31
  2. probleme bind avec une séquence
    Par guitariste dans le forum JavaFX
    Réponses: 3
    Dernier message: 28/05/2009, 23h24
  3. Création clé primaire avec une séquence
    Par richard_sraing dans le forum PL/SQL
    Réponses: 0
    Dernier message: 14/11/2008, 00h36
  4. Réponses: 1
    Dernier message: 25/09/2006, 10h18
  5. tri avec l'ordre UPDATE et incrementation d'une colonne
    Par Staron dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/02/2004, 08h48

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