Bonjour à tous,
Pour commencer je ne suis pas débutant en sql, mais disons que c'est ma bête noir... et donc mes connaissances sontasseztrès limitées...
Je suis entrain de re-développer un vieux projet dans lequel une table était constituée ainsi.
-----------------------------------------
| ID | LB1 | V1 | V2 | V3 ..... | V16 |
| 1 | UN |1.1 |1.2| 1.3 ..... | null |
| 2 |DEUX|2.1 |null|null ......| null |
Cette table fonctionne en prod, en gros elle sert à enregistrer des pointages, on peut donc avoir jusqu'à 16 pointages, V1 est renseigné, puis V2, puis V3 .... etc
Mon projet avançant, je me suis dis que j'allais mettre un trigger sur cette table pour que les insert et update (pas de delete) ce répercute sur ma nouvelle table, qui elle, a une structure complétement différente. Dans cette nouvelle table, l'idée est plutôt d'avoir une ligne par valeur/pointage. Ce qui donnerait :
-----------------------------------------
| IDauto | ID | LB1 | V |
| 1 | 1 |UN |1.1|
| 2 | 1 |UN |1.2|
| 3 | 1 |UN |1.3|
| 4 | 2 |DEUX|1.2|
J'ai donc commencé par faire le plus facile , un trigger sur l'insert (after) qui insert en plus dans ma nouvelle table, facile car lors de cet insert seule la première valeur est renseignée.
Mon problème est donc dans le trigger d'update, car il faut que je détecte quelle valeur a été mise à jour, pour ne faire qu'un insert de cette valeur dans ma nouvelle table.
En cherchant un peu j'ai trouvé Update() mais ça n'est pas adapté à mon cas car elle nous informe juste sur le fait que le champs était dans la requête update ou non, et pas si la valeur du champs a changé... COLUMNS_UPDATED semble être de la même veine.
Donc voila je pensais que ma solution serait simple et me permettrais de tester mes dev avec des données de prod, envoyées instantanément. Je suis conscient que cette façon de faire n'est pas viable à long terme, mais l'idée était juste de faire tourner les 2 systèmes en parallèle pendant une courte période.
Donc si vous avez une technique pour détecter un changement de valeur dans un trigger update, ou alors une toute autre solution... Sinon au pire j'ai un script qui me permet de transférer toutes les données de l'ancienne vers la nouvelle... je le lancerais toutes les heures ...
Merci d'avance,
J@ck.
Partager