> Tech > Une solution de dimensions qui changent lentement (2)

Une solution de dimensions qui changent lentement (2)

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Ensuite, vous créez un ensemble de triggers sur la table Products, qui enregistrent les transactions dans la table Prod_log. Les triggers INSERT et DELETE fonctionnent très simplement : ils enregistrent toutes les données provenant des tables insérées et supprimées, respectivement, plus un I ou un D comme le tran_type dans

la
table Prod_log. Tout en étant connecté
à  la base de données source, exécutez
le script du listing 3 pour créer les triggers
INSERT et DELETE. Notons que
SQL Server utilise l’attribut de colonne
IDENTITY et la valeur par défaut GETDATE(),
respectivement, pour générer
les valeurs lsn et log_date. Les valeurs
namechg et packagechg n’ont aucune
importance quand vous insérez ou
supprimez des valeurs, donc elles reçoivent
des NULL.

Le trigger UPDATE est plus complexe.
Tout d’abord, il vérifie s’il y a eu
une tentative de changer l’ID du produit
et si oui, il ramène en arrière la
transaction. (Un système OLTP bien
conçu devrait interdire tout changement
de l’ID produit une fois qu’il est
défini.) Le trigger UPDATE doit aussi
comparer l’ancienne image des données
(la table supprimée) à  la nouvelle
image (la table insérée) pour s’assurer
que le nom ou le conditionnement du
produit a changé et pour déterminer
les nouvelles valeurs des colonnes namechg
et packagechg. Il est intéressant
d’utiliser la fonction UPDATE() pour
déterminer si ces colonnes ont changé,
pour deux raisons. Premièrement,
votre trigger devrait traiter des mises à 
jour multi lignes, mais les attributs
de produit dans certaines lignes
pourraient changer tandis que les attributs
d’autres produits restent les
mêmes. Deuxièmement, la fonction
UPDATE() renvoie TRUE quand vous
spécifiez une colonne dans la clause
SET d’une instruction UPDATE, et ce,
que la valeur de la colonne ait changé
ou non. Vous pouvez exécuter le script
illustré dans le listing 4 pour créer
un trigger UPDATE sur la table
Products.

Pour tester vos triggers, appliquez
les instructions INSERT suivantes à  la
table Products :

INSERT INTO Products(productid, productname,
package)
VALUES(1à˜1, 'prod1', 1à˜)
INSERT INTO Products(productid, productname,
package)
VALUES(1à˜2, 'prod2', 1à˜)
INSERT INTO Products(productid, productname,
package)
VALUES(1à˜3, 'prod3', 1à˜)

Téléchargez cette ressource

Comment lutter contre le Phishing ?

Comment lutter contre le Phishing ?

Dans un environnement cyber en constante mutation, le phishing évolue vers des attaques toujours plus sophistiquées combinant IA, automatisation et industrialisation. Une réalité complexe qui exige des mesures de sécurité avancées et repensées au-delà de l’authentification multifacteur. Découvrez les réponses technologiques préconisées par les experts Eviden et les perspectives associées à leur mise en œuvre.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010