Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 27/07/2016 12:57:16
- morista
- Membre
Trigger for Update
Bonjour,
J'ai une table audite que je souhaite gérer avec un trigger.
Pour les Insertions et les Suppression c'est déjà. Par contre
pour chaque Update je veux enregistrer en meme temps
la valeur modifier et son ancien valeur. Can you help me please ??
Voici ma fonction
CREATE OR REPLACE FUNCTION "log_mission" () RETURNS trigger
VOLATILE
AS $dbvis$
BEGIN
IF (TG_OP = 'DELETE') THEN
INSERT INTO audit VALUES(uuid_generate_v4(), OLD.account_id, current_timestamp, 'Mission', 'Suppresion', '', '', OLD.account_id);
RETURN OLD;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO audit VALUES(uuid_generate_v4(), NEW.account_id, current_timestamp, 'Mission', 'Modification', '', '', NEW.account_id);
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit VALUES(uuid_generate_v4(), NEW.account_id, current_timestamp, 'Mission', 'Création', '', '', NEW.account_id);
END IF;
RETURN NEW;
END;
$dbvis$ LANGUAGE plpgsql
Hors ligne
#2 27/07/2016 21:33:55
- gleu
- Administrateur
Re : Trigger for Update
J'avoue que je ne vois pas ce qui vous pose problème. Vous utilisez OLD pour les anciennes valeurs, et NEW pour les nouvelles, comme vous le faites déjà pour le DELETE et l'INSERT.
Guillaume.
Hors ligne
#3 28/07/2016 12:21:43
- morista
- Membre
Re : Trigger for Update
Merci pour ta réponse. Oui je l'ai finalement avec NEW et OLD
IF (TG_OP = 'UPDATE') THEN
IF (NEW.valid_to != OLD.valid_to) THEN
INSERT INTO audit VALUES(uuid_generate_v4(), ...);
ELSIF (NEW.rate != OLD.rate) THEN
INSERT INTO audit VALUES(...);
ELSIF(NEW.workflow_state != OLD.workflow_state) THEN
INSERT INTO audit VALUES(...
END IF;
Hors ligne
Pages : 1