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" 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 CREATE VIEW auditor.$$ || sch || $$_$$ || tbl || $$_lifecycle AS
36 SELECT now() as audit_time, 'C' as audit_action, *
37 FROM $$ || sch || $$.$$ || tbl || $$
40 FROM auditor.$$ || sch || $$_$$ || tbl || $$_history;
44 $creator$ LANGUAGE 'plpgsql';
46 SELECT auditor.create_auditor ( 'actor', 'usr' );
47 SELECT auditor.create_auditor ( 'biblio', 'record_entry' );
48 SELECT auditor.create_auditor ( 'asset', 'copy' );