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 !