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.