Bonjour,
Je me trouve dans un contexte datawarehouse et je travail avec Oracle comme BDD. Mon problème est le suivant :
J'ai une table de dimension "clients" qui a une clé primaire composée de deux colonnes (une clé composite). Mon but est de créer une clé primaire artificielle (une surrogate key) de type Number dans cette table. Un entier qui s'incrémente à chaque INSERT serait parfait pour cette clé.
Une des solutions que j'ai trouvée c'est de créer une séquence, et ensuite créer un déclencheur dans ma table clients pour affecter la valeur nextval() de la séquence à la clé artificielle à de chaque INSERT sur la table. Mes craintes sont les suivantes :
- Est ce que ça se fait de créer un déclencheur dans une table de dimension s'alimentant en batch ? cela ne risque-t-il pas de rendre la mise à jour de la table excessivement lent ?
- J'ai entendu pas mal de mauvaises choses pas rassurantes sur les séquences oracle : la séquence redémarre à zéro de façon inattendue, valeurs imprévisibles, etc. Est-ce vrai ? Cela mettrai réellement en question la viabilité de cette technique dans le temps
- Enfin, existe-t-il un procédé plus optimal de réaliser ce que j'ai décrit ?
Merci pour vos réponses.
Partager