Trigger annulation delete
Bonjour,
Je souhaite créer un trigger pour recréer une ligne supprimée.
Explication :
Une application peut être amenée à supprimer des lignes dans une table A. Désormais, je dois garder une trace de cette suppression. Pour cela, j'ai créé un nouveau champ IS_DELETE dans ma table A. Il n'est pas possible de modifier l'application existante (remplacer l'ordre "DELETE FROM A WHERE ID = ...) par UPDATE A SET IS_DELETE = 'Y' WHERE ID = ...).
Je pensais donc utiliser un trigger mais j'ai un problème de table mutante.
J'ai même essayé d'utiliser une table temporaire et d'utiliser deux trigger mais cela ne fonctionne pas.
Script 1er trigger :
Code:
1 2 3 4 5 6 7 8 9
| CREATE OR REPLACE TRIGGER TRG_IS_DELETE1
BEFORE DELETE ON A
FOR EACH ROW
BEGIN
INSERT INTO A_TEMP (ID,IS_DELETE) VALUES (:old.ID,'Y');
END;
/ |
Script 2ème trigger :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| CREATE OR REPLACE TRIGGER TRG_IS_DELETE2
AFTER INSERT ON A_TEMP
FOR EACH ROW
BEGIN
INSERT INTO A (ID,IS_DELETE)
SELECT ID, IS_DELETE FROM A_TEMP;
DELETE FROM A_TEMP;
END;
/ |
Je ne sais plus trop comment m'en sortir. J'aurai aimé le gérer avec un seul trigger sans table temporaire mais j'ai l'impression que ce n'est pas possible.
De plus, avec 2 triggers et une table temporaire, je n'y arrive même pas.
Quelqu'un peut-il m'aider ?
Merci