1 DROP SCHEMA auditor CASCADE;
8 CREATE FUNCTION auditor.create_auditor ( sch TEXT, tbl TEXT ) RETURNS BOOL AS $creator$
11 CREATE SEQUENCE auditor.$$ || sch || $$_$$ || tbl || $$_pkey_seq;
15 CREATE TABLE auditor.$$ || sch || $$_$$ || tbl || $$_history (
16 audit_id BIGINT PRIMARY KEY,
17 audit_time TIMESTAMP WITH TIME ZONE NOT NULL,
18 audit_action TEXT NOT NULL,
19 LIKE $$ || sch || $$.$$ || tbl || $$
24 CREATE FUNCTION auditor.audit_$$ || sch || $$_$$ || tbl || $$_func ()
25 RETURNS TRIGGER AS $func$
27 INSERT INTO auditor.$$ || sch || $$_$$ || tbl || $$_history
28 SELECT nextval('auditor.$$ || sch || $$_$$ || tbl || $$_pkey_seq'),
34 $func$ LANGUAGE 'plpgsql';
38 CREATE TRIGGER audit_$$ || sch || $$_$$ || tbl || $$_update_trigger
39 AFTER UPDATE OR DELETE ON $$ || sch || $$.$$ || tbl || $$ FOR EACH ROW
40 EXECUTE PROCEDURE auditor.audit_$$ || sch || $$_$$ || tbl || $$_func ();
44 CREATE VIEW auditor.$$ || sch || $$_$$ || tbl || $$_lifecycle AS
45 SELECT -1, now() as audit_time, '-' as audit_action, *
46 FROM $$ || sch || $$.$$ || tbl || $$
49 FROM auditor.$$ || sch || $$_$$ || tbl || $$_history;
53 $creator$ LANGUAGE 'plpgsql';