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.

Reply via email to