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.
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 |