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

SQL Oracle Discussion :

Problème sur une utilisation Trigger/sequence


Sujet :

SQL Oracle

  1. #1
    Membre émérite Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Par défaut Problème sur une utilisation Trigger/sequence
    Bonjour,

    Je suis actuellement en train de concevoir un Datawarehouse sous Oracle, et j'ai quelques petites suprises lorsque je remplis certaines tables.

    Afin d'avoir une clef unique pour chacune des mes entrées, j'utilise un trigger couplé à une sequence pour de chaque nouvelle ligne entrée (via un ETL : Talend)

    Dans mon exemple, ma table est : DIMCTR

    Ci-dessous le code du trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE TRIGGER TBI_IdtDimCtr
       BEFORE INSERT
       ON DIMCTR
       FOR EACH ROW
    BEGIN
       SELECT SEQ_IdtDimCtr.NEXTVAL
         INTO :NEW.IdtDimCtr
         FROM DUAL;
    END;
    et ci-dessous, la sequence qui lui est liée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE SEQUENCE SEQ_IdtDimCtr
      START WITH 1
      MAXVALUE 999999999999999999999999
      MINVALUE 1
      NOCYCLE
      NOCACHE
      NOORDER;
    Maintenant, le problème que j'ai, c'est que, si la plus part du temps, ca marche, je n'ai aucun soucis, pour certaines tables (dont celle la en exemple) ma sequence commence à 10001 et surtout, elle saute des valeur lorsque je rajoute des valeurs par la suite en passant par exemple de 70000 à 130000.

    Voila, je sais pas si vous avez besoin de plus d'éléments pour savoir d'où ca vient... peut etre que c'est le moteur d'oracle qui pete un cable tout simplement.

    J'attends vos commentaires.

    Merci d'avance

    Steven


    PS : je ne suis pas un pro de SQL, les codes proviennent du net et peut etre que l'erreur vient de là, mais je ne sais pas la déceler !

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Ce n’est pas la valeur de la séquence mais probablement la valeur la plus petit de la table. La séquence est consomme par le trigger avant l’insertion, donc pour chaque déclanchement du trigger y compris quand un rollback explicite ou implicite arrive.
    Donc la question est comment vous faite vos inserts ?

  3. #3
    Membre émérite Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Par défaut
    hmmm, en fait, j'ai trouver ma solution.... c'est au contraire dans les select que j'avais le soucis...

    ca extrait la valeur, et la prend a nouveau avec le trigger, donc forcement, double utilisation, ca devrait regler pas mal de probleme quand j'aurais vu ca !!

    merci de ta reponse en tout ca, si j'ai a nouveau besoin d'aide, je reviendrais vous embeter ^^

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Si vous voulez un conseil, essayez de centraliser l'intelligence de vos flux à un seul endroit.

    Si vous avez des règles de gestion de données dans Talend, puis d'autres dans Oracle à un moment donné ça va devenir compliqué de comprendre ce qui se passe.

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

Discussions similaires

  1. [Optimisation] Problème sur une requête UNION.
    Par françois62 dans le forum Requêtes
    Réponses: 5
    Dernier message: 28/06/2005, 16h08
  2. Débutant SQL, problème sur une jointure censée exclure ??
    Par derfatypik dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/06/2005, 15h55
  3. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 10h54
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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