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_TGBI
BEFORE 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_TGBU
BEFORE 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 := :o ld.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_TGBU
BEFORE 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

Laisser un commentaire

WordPress Themes