Bonjour,
Je dois mettre en place un trigger qui se declenche sur un update d'une table A et doit mettre a jour cette meme table A.
Je suis donc confronté au problème de table mutante.
J'ai donc créé une table temporaire B qui stocke les elements mis à jour sur A et j'ai créé un trigger sur insertion sur B qui lui fait la mise a jour finale de A.
J'ai toujours le meme probleme de table mutante.
Existe-t-il un moyen de "contourner" le probleme ?
Code premier trigger
CREATE OR REPLACE TRIGGER UPDATECNILMAIL
AFTER UPDATE OF CodeElementStat ON STATS_CLIENT
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
WHEN (OLD.CodeAxeStat = 47) -- Code Axe Stat Cnil Mail
BEGIN
DELETE FROM TEMP_STATS_CLIENT
WHERE CodeClient = :OLD.CodeClient
AND CodeAxeStat = 50;
INSERT INTO TEMP_STATS_CLIENT (CodeClient,CodeAxeStat,ValeurAxeStatistiqueClient)
VALUES(:OLD.CodeClient,50,sysdate);
END;
Code deuxieme trigger :
CREATE OR REPLACE TRIGGER INSERTTEMPSTATSCLIENT
BEFORE INSERT ON TEMP_STATS_CLIENT
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
update STATS_CLIENT
set VALEURAXESTATISTIQUECLIENT = :NEW.VALEURAXESTATISTIQUECLIENT
where CodeClient = :NEW.CodeClient
and CodeAxeStat = 50; -- Code Axe Stat Date dernière modification CNIL mail
IF SQL%NOTFOUND THEN
INSERT INTO STATS_CLIENT (CodeClient,CodeAxeStat,ValeurAxeStatistiqueClient)
VALUES(:NEW.CodeClient,50,:NEW.VALEURAXESTATISTIQUECLIENT);
END IF;
END;
Merci d'avance pour vos précieuses réponses.
Partager