Bonjour,
Voila mon problème j'ai une procédure P1 qui met à jour une table T1 de nombreuses fois. Cette mise à jour active un Trigger TG1.
Tout cela fonctionne tres bien. Le problème c'est que cet appel au trigger prend enormement de temps car répété de nombreuses fois, et que (tests à l'appui) en faisant le traitement du trigger directement dans P1 cela va beaucoup plus vite.
La solution simple serait, direz vous, de supprimer le trigger. Oui mais voila des procédures P2, P3 ... utilisent aussi ce trigger. Et comme P1 est un traitement long, on ne peut ni supprimer TG1, ni le désactiver le temps d'execution de P1 vu que P2 ou une autre procédure risque de s'activer pendant ce temps la.
Le but bien sur n'étant pas de faire passer le traitement du trigger dans chaque procédure utilisant celui-ci pour pouvoir s'en débarasser.
J'ai essaye de mettre un variable globale testée en début de trigger pour lui dire si il doit effectuer ou non son traitement, mais le gain de temps est négligeable, ce n'est en effet pas le traitement qui prend du temps mais reellement les activations repetées du trigger.
Voila le code du début du trigger
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE OR REPLACE TRIGGER TG1 BEFORE INSERT OR UPDATE OF Col1, Col2 ON T1 FOR EACH ROW BEGIN ... END;
Partager