Re: table version history - Mailing list pgsql-novice

From Joel Burton
Subject Re: table version history
Date
Msg-id Pine.LNX.4.21.0104081447160.23870-100000@olympus.scw.org
Whole thread Raw
In response to Re: table version history  (Joel Burton <jburton@scw.org>)
Responses Re: Re: table version history  (Tom Strickland <tom@stricklandc.demon.co.uk>)
List pgsql-novice
On Sun, 8 Apr 2001, Joel Burton wrote:

(oops! I sent it before I included the scripts. My apologies)

On Sun, 8 Apr 2001, Tom Strickland wrote:

> I'd like to provide users with history on important tables, so that
> they can go back and examine changes. This is partly to do with the
> UK's Data Protection Act, which states that an organisation must keep
> a log of all changes to information kept on a user. I'd like to have a
> mechanism of being able to print a report on one of our clients that:
> 1) prints all current info on user (easy)
> 2) prints all changes to that user's info (not so easy).

You could add a trigger onto the table so that all updates are inserted
into a log table.


CREATE TABLE person (fname text, lname text);

CREATE TABLE person_log (changeid serial, fname text, lname text, op text, chgat
timestamp default current_timestamp, chgby varchar(32) default current_user);

CREATE FUNCTION person_log_func () returns opaque as '
BEGIN
  IF TG_OP = ''DELETE'' THEN
    INSERT INTO person_log (fname,lname,op) values (OLD.fname, OLD.lname,TG_OP);
  ELSE
    INSERT INTO person_log (fname,lname,op) values (NEW.fname, NEW.lname,TG_OP);
  END IF;
  RETURN NEW;
END;
' language 'plpgsql';

CREATE TRIGGER person_log_chg  after update or insert or delete on person
for each row execute procedure person_log_func();


INSERT INTO person VALUES ('joel','burton');
UPDATE person SET fname = 'pup';
DELETE FROM person;

SELECT * FROM person_log;

 changeid | fname | lname  |   op   |         chgat          | chgby
----------+-------+--------+--------+------------------------+-------
        1 | joel  | burton | INSERT | 2001-04-08 14:44:25-04 | joel
        2 | pup   | burton | UPDATE | 2001-04-08 14:44:25-04 | joel
        3 | pup   | burton | DELETE | 2001-04-08 14:44:25-04 | joel


HTH,
--
Joel Burton   <jburton@scw.org>
Director of Information Systems, Support Center of Washington


pgsql-novice by date:

Previous
From: Joel Burton
Date:
Subject: Re: table version history
Next
From: "Johannes Graumann"
Date:
Subject: pgaccess and postgresql