Skip site navigation (1) Skip section navigation (2)

Re: trigger d'historisation

From: "Sihem MOUALHI" <Sihem(dot)MOUALHI(at)cefe(dot)cnrs(dot)fr>
To: <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: trigger d'historisation
Date: 2011-04-12 14:37:42
Message-ID: 01B930F7330B8F4590FB58789BE3CED58F12B3@ZZML.newcefe.newage.fr (view raw or flat)
Thread:
Lists: pgsql-fr-generale
Voici le code du trigger que j'utilise:

 

CREATE OR REPLACE FUNCTION histo_table() RETURNS TRIGGER AS $histo_table$

  

BEGIN

  

    

    IF (TG_OP = 'DELETE') THEN

        INSERT INTO history_table (date, attribut2, attribut3,...)

        SELECT now(), OLD.attribut2, OLD.attribut3,..        

        FROM matable;

        

    ELSIF (TG_OP = 'UPDATE') THEN

        INSERT INTO history_table (date, attribut2, attribut3,...)

        SELECT now(), OLD.attribut2, OLD.attribut3,..        

        FROM matable;    

    END IF;

    RETURN NULL; 

END;

  

 

$histo_table$ LANGUAGE plpgsql;

        

CREATE TRIGGER histo_table

    AFTER UPDATE OR DELETE ON matable

    FOR EACH ROW EXECUTE PROCEDURE histo_table();

 

La clé primaire des tables historiques est un serial.

 

 

-----Message d'origine-----

De : Guillaume Lelarge [mailto:guillaume(at)lelarge(dot)info] 

Envoyé : mardi 12 avril 2011 16:23

À : Sihem MOUALHI

Cc : pgsql-fr-generale(at)postgresql(dot)org

Objet : Re: [pgsql-fr-generale] trigger d'historisation

 

Bonjour,

 

Le 12/04/2011 16:02, Sihem MOUALHI a écrit :

> [...]

> J'ai réalisé des tables historiques pour chacune des tables de la base sur  laquelle je travaille actuellement et l'historisation se fait via des triggers. Ainsi, lorsqu'on modifie un enregistrement ou qu'on le supprime, celui-ci sera enregistré dans la table historique correspondante. Cependant, lorsqu'on effectue l'opération DELETE sur une table ne contenant qu'une seule ligne (la table sera donc vide), cette ligne n'est pas enregistrée dans la table historique. 

> 

> Sauriez-vous quelle en est la raison ? 

> 

 

Une procédure stockée buggée, une mauvaise déclaration du trigger...

tout est imaginable sans plus d'informations.

 

Sauf le bug dans PostgreSQL vu que j'ai testé de mon côté et que cela

fonctionne (avec une version 9.0).

 

 

-- 

Guillaume

http://www.postgresql.fr

http://dalibo.com

 

Responses

pgsql-fr-generale by date

Next:From: Daniel VeriteDate: 2011-04-12 14:48:51
Subject: Re: trigger d'historisation
Previous:From: Guillaume LelargeDate: 2011-04-12 14:22:54
Subject: Re: trigger d'historisation

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group