| La base de données du System i et les triggers |
|
La base de données générée par SQL remplace tranquillement les dds traditionnelles, à cette occasion on se pose beaucoup de questions sur la mise en oeuvre de triggers !
Voici quelques précisions qui vont vous aider à y voir un peu plus claire.
Tout d'abord une petite définition des déclencheurs, celle de wikipedia par exemple :
http://fr.wikipedia.org/wiki/Déclencheur
il est important de différencier les triggers en 2 grandes catégories ceux qui doivent
s'exécuter avant et ceux qui doivent s'exécuter après :
1 Les triggers avants :
que l'On peut également les classifier encore en 2 sous categories
La première, les triggers de complémentation qui donnent des informations supplémentaires pour la mise à jour à effectuer
Exemple :
Vous avez dans votre fichier des informations de suivi datemodif, heure modif, user votre trigger les renseignera automatiquement
La deuxième, Les Triggers de contrôle qui donnent l'autorisation pour faire quelque chose et fera planter le cas échéant l'application qui le lance
Exemple :
qte en stock > qte demandé
Ce controle doit être rapide pour des questions de performance !
Le gros problème à ce jour c'est qu'on ne sait pas identifier facilement le trigger qui refuse les mises à jour
2 Les triggers après :
On peut également les classifier encore en 2 sous categories
La première, les triggers d'historisation ou de log qui sont utilisé pour tracer des informations
Log d'un traitement dans un fichier historique distinct du fichier sur lequel il est apposé ,
ou traçabilité pour audit ultérieur
La deuxième, les triggers de traitement
il ne refuse pas une action mais lancement un traitement liè à cette mise à jour
Exemple :
si qte en stock < qte mini lancer un réapprovisionnement
Il ne faut pas hésiter à soumettre ce traitement qui souvent ne necessite pas une synchronisation
Une des grandes questions également à ce poser est Trigger RPG ou SQL ?
Une des différences importantes est qu'en sql on peut
Réduire le nombre d'exécution en choisissant
les colonnes mise à jours
les enregistrements
on peut constater des ratios de 300 pour 1 dans certain cas
En claire si vous pouvez le faire en sql , n'hésitez pas !
De plus sur un pgm rpg lancer souvent ne pas hésiter à le monter en mémoire
setobjacc ....
En résumé
Les trigers sont trés interessants pour de nombreuses actions mais
attention à leurs manipulations (par exemple duplication de fichier ...)
quelques conseils
Quand vous mettez en place des triggers de controle historiser les refus dans un fichier
ce qui vous permettra de suivre facilement vos erreurs !
Quand vous avez un trigger maj insertion et delete , prévoyer un seul programme en RPG avec test du code mise à jour et
Passer par une procédure pour un trigger sql, si vous devez changer vous n'aurez qu'une modif à faire
Ne jamais faire de mise à jour sur le fichier dans un trigger vous partirez en boucle !
Pensez à la sécurité qui peut gérer les triggers de ma base
|