Re: plpgsql before insert update delete - Mailing list pgsql-sql

From Ian Barwick
Subject Re: plpgsql before insert update delete
Date
Msg-id 200112080359.EAA28586@post.webmailer.de
Whole thread Raw
In response to plpgsql before insert update delete  ("kiyo taka" <hihajime@hotmail.com>)
List pgsql-sql
On Wednesday 05 December 2001 06:47, kiyo taka wrote:
> hi all.
>
> i'd like to noe how to create trigger which will insert tablez old data
> into an archive table before any(insert,update,delete) operation is
> executed.
>
> i've tried "if inserting ...." but it didnt work.
> is there any function that will do it?

Assuming an example table thus: CREATE TABLE mytable(id INTEGER, whatever VARCHAR(16));

and an identical archive table: CREATE TABLE mytable_archive(id INTEGER, whatever VARCHAR(16));

you can create the following function and trigger for that
table:

DROP FUNCTION  mytable_archive_proc();
CREATE FUNCTION mytable_archive_proc() RETURNS opaque AS '   BEGIN     IF TG_OP = ''DELETE''       THEN INSERT INTO
mytable_archiveVALUES(old.id, old.whatever);            RETURN old;       ELSE INSERT INTO mytable_archive
VALUES(new.id,new.whatever);     END IF;     RETURN new;   END;' LANGUAGE 'plpgsql';
 


DROP TRIGGER mytable_archive_trigger ON mytable;
CREATE TRIGGER mytable_archive_trigger BEFORE INSERT OR UPDATE OR DELETE   ON mytable FOR EACH ROW   EXECUTE PROCEDURE
mytable_archive_proc();

Which should write all changes in "mytable" to "mytable_archive".


> any help will be greatly appreciated.
>
> thanx.

Dou itashimashite

Ian Barwick


pgsql-sql by date:

Previous
From: lin_melisa@hotmail.com (Melisa)
Date:
Subject: anyone can help?
Next
From: "Richard Lockwood"
Date:
Subject: Can anybody help me with SQL?