Copying data with triggers

From: Keith Wong <keith(at)e-magine(dot)com(dot)au>
To: pgSQL <pgsql-sql(at)postgresql(dot)org>
Subject: Copying data with triggers
Date: 2000-08-21 14:48:27
Message-ID: 4.3.2.7.0.20000822003607.00b0d6b0@mail.e-magine.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hi all,

In the database I'm designing, I want to have audit tables that keep a log
of all inserts, updates and deletes that occur
on any table.

e.g. If i had a table Info,
create table Info ( info_id SERIAL,
some_data text
)

I would also have a corresponding audit table

create table AudInfo (aud_key_id SERIAL,
info_id int4,
some_data text,
aud_operation_type,
aud_log_time timestamp default now()
)

now I tried creating a trigger on Info, so that whenever an insert occurs,
the records are copied to the audit table.

create function tp_info () returns opaque as '
begin
-- insert into audit table
insert into AudInfo (info_id, some_data, aud_operation_type) values
(new.info_id, new.some_data, ''i'');
return new;
end;
' language 'plpgsql';

create trigger tp_info before insert on Info
for each row execute procedure tp_info();

This doesn't work however. A parse error occurs in the first line.
I suspect that I cannot insert a record into another table in a trigger.
I'm not sure why though.

Anybody else done similar operations within a trigger procedure? Or know of
a work around?

Cheers,
Keith.

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Poul L. Christiansen 2000-08-21 15:20:24 Re: 8K Limit, whats the best strategy?
Previous Message Andreas Tille 2000-08-21 14:33:10 Re: Beginner problems with functions