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 :
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
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;
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.
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;
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 !
Partager