oracle trigger
dans les exemples ci-dessous, remplacer "MaTable" par le nom de votre table et les champs UPDATED_AT & CREATED_AT par les noms de vos champs.
Créer un trigger avant insertion qui va renseigner automatiquement les champs "date de creation" (created_at) & "date de mise à jour" (updated_at)
CREATE OR REPLACE TRIGGER MaTable_TGBIBEFORE INSERT
ON MaTable
FOR EACH ROW DECLARE BEGIN
:new.CREATED_AT := sysdate;
:new.UPDATED_AT := sysdate;
END;
Créer un trigger avant mise à jour qui va renseigner automatiquement le champs "date de mise à jour" (updated_at)
CREATE OR REPLACE TRIGGER MaTable_TGBUBEFORE UPDATE
ON MaTable
FOR EACH ROW DECLARE BEGIN
:new.UPDATED_AT := sysdate; -- plus vicieux, on empêche la modification du champ CREATED_AT
:new.CREATED_AT :=
END;
Si en plus vous voulez historiser les informations modifiées ou supprimées de votre table "MaTable" dans une table "TableHisto"
alors le triggers before update doit etre le suivant, et il faut créer le trigger before delete
note : TableHisto est l'image de MaTable avec un champs HISTO_AT rajouter à la fin (la clé de cette table es la clé de la table MaTable + le champ HISTO_AT
create or replace TRIGGER MaTable_TGBUBEFORE UPDATE
ON MaTable FOR EACH ROW DECLARE
BEGIN
INSERT INTO TableHisto VALUES (:old.champ1,:old.champ1,...,:old.champN,sysdate);
END; create or replace TRIGGER MaTable_TGBD
BEFORE DELETE
ON MaTable FOR EACH ROW DECLARE
BEGIN
INSERT INTO TableHisto VALUES (:old.champ1,:old.champ1,...,:old.champN,sysdate);
END;
autre :
pragma autonomous_transaction;
utile pour des logs car si un rolback est exécuté dans la procédure parent, la log sera tous de même enregistré si vous mettez un commit dans cette procédure (en même temps,si vous n'en mettez pas, les actions de cette procédure ne seront jamais enregistré).
Pas de commentaire
Pas encore de commentaire.
Flux RSS des commentaires de cet article. TrackBack URI