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 :

problème de séquences


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 120
    Points : 48
    Points
    48
    Par défaut problème de séquences
    Bonjour,
    j'ai crée une séquence ainsi qu'un trigger pour permettre l'incrémentation automatique.

    Voici ma séquence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    create sequence SEQ_EQUIP_MATERIEL
    start with 1
    increment by 1;
    et mon trigger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create or replace trigger TRG_EQUIP_MATERIEL
      before insert on CW_TB_EQUIPEME           
      for each row 
    begin 
    	select 'EQUIP0000' || SEQ_EQUIP_MATERIEL.nextval into :new.BV7_NEQUIPEMENT
         	from dual;
    end TRG_EQUIP_MATERIEL;
    Pour le 1er enregistrement, il me crée le EQUIP00001 mais apres il me crée le EQUIP000021 !!!!!

    Pourquoi?????
    Merci

  2. #2
    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
    y a-t-il l'option CACHE à 20 ?

  3. #3
    Membre habitué Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Points : 191
    Points
    191
    Par défaut
    Si tu la supprimes et que tu la recrées, est ce qu il te fait encore EQUIP00001 et EQUIP000021?
    C'est juste pour savoir si le phénomène n'est pas aléatoire.
    Ensuite je ne sais pas si tu sais, mais si tu fais un "nextval", le compteur de la séquence s'incrémente et ne redescent pas.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 120
    Points : 48
    Points
    48
    Par défaut
    oui le cache est a 20 c'est 'grave' ??

  5. #5
    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
    si Oracle a besoin de mémoire il utilise l'espace du cache donc le coup d'après elle fait un bon equivalent au CACHE. Lors du redémarrage de l'instance ou un flush de SGA le cache est également perdu

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 120
    Points : 48
    Points
    48
    Par défaut
    ok je vais mettre la valeur du cache à 1 alors.
    Quel est la ligne de création a rajouter dans ma séquence alors en SQL??
    Merci

  7. #7
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create sequence SEQ_EQUIP_MATERIEL
    start with 1
    increment by 1
    NOCACHE;

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 120
    Points : 48
    Points
    48
    Par défaut
    Donc si je résume la situation si je mets pas de cache la séquence va incrémenter mon id de 1 en 1 ??

  9. #9
    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
    oui mais les perfs seront moindre

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 120
    Points : 48
    Points
    48
    Par défaut
    C'est a dire??
    Quand est ce que les performances au niveau d'oracle seront "visibles" ?

  11. #11
    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
    quand tu as un cache Oracle fait un accés pour x valeur alors que si tu n'en as pas il fait un accés à chaque nextval

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2002
    Messages : 66
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Fred_D
    quand tu as un cache Oracle fait un accés pour x valeur alors que si tu n'en as pas il fait un accés à chaque nextval
    donc si par exemple on a un batch qui met fait des inserts en masse vaut mieux mettre un cache sur les sequences ???
    on a un batch qui tourne 5 fois par jour et qui fait des inserts par lot (environ 9000 par execution) ça pourrait accélérer donc ?

    c'est sur une 9i R2

  13. #13
    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
    oui

  14. #14
    CD
    CD est déconnecté
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Points : 151
    Points
    151
    Par défaut
    Après, est ce que c'est important d'avoir des numéros qui se suivent exactement... Si vous avez des ids qui se suivent, et que vous effaciez quelques lignes, vous aurez aussi des "trous" dans vos identifiants.

    Par contre, la séquence permettra d'être sûr d'avoir un numéro unique.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2002
    Messages : 66
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par CD
    Après, est ce que c'est important d'avoir des numéros qui se suivent exactement... Si vous avez des ids qui se suivent, et que vous effaciez quelques lignes, vous aurez aussi des "trous" dans vos identifiants.

    Par contre, la séquence permettra d'être sûr d'avoir un numéro unique.
    oui c 'est sur ... mais bon dans mon cas on s'en balance....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Annotation] Problème incrémentation séquences
    Par Jedy dans le forum Hibernate
    Réponses: 2
    Dernier message: 28/10/2008, 19h26
  2. Problème de séquence
    Par gemogof dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 15/09/2008, 17h38
  3. problème de séquence avec deux base de donnée JPA sous JBoss
    Par eclectik dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 14/09/2008, 18h55
  4. Problème de séquence avec Hibernate annotation
    Par GabriHell dans le forum Hibernate
    Réponses: 1
    Dernier message: 29/07/2008, 17h52
  5. [AJAX] Séquence avec AJAX
    Par lapin_hobbit dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/11/2006, 14h18

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