Vous n'êtes pas identifié(e).

#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

Pied de page des forums