1 DROP SCHEMA auditor CASCADE;
7 CREATE FUNCTION auditor.create_auditor ( sch TEXT, tbl TEXT ) RETURNS BOOL AS $creator$
10 CREATE TABLE auditor.$$ || sch || $$_$$ || tbl || $$_history (
11 audit_time TIMESTAMP WITH TIME ZONE NOT NULL,
12 audit_action CHAR(1) NOT NULL,
13 LIKE $$ || sch || $$.$$ || tbl || $$
18 CREATE FUNCTION auditor.audit_$$ || sch || $$_$$ || tbl || $$_func ()
19 RETURNS TRIGGER AS $func$
21 INSERT INTO auditor.$$ || sch || $$_$$ || tbl || $$_history
22 SELECT now(), SUBSTR(TG_OP,1,1), OLD.*;
25 $func$ LANGUAGE 'plpgsql';
29 CREATE TRIGGER audit_$$ || sch || $$_$$ || tbl || $$_update_trigger
30 AFTER UPDATE OR DELETE ON $$ || sch || $$.$$ || tbl || $$ FOR EACH ROW
31 EXECUTE PROCEDURE auditor.audit_$$ || sch || $$_$$ || tbl || $$_func ();
35 $creator$ LANGUAGE 'plpgsql';
37 SELECT auditor.create_auditor ( 'actor', 'usr' );
38 SELECT auditor.create_auditor ( 'biblio', 'record_entry' );
39 SELECT auditor.create_auditor ( 'asset', 'copy' );