blob: c9752d52f9ca245d84887482587fe7501ffd7de3 [file] [log] [blame]
/*Region History*/
CREATE TABLE IF NOT EXISTS REGION_HIST (HIST_ID serial, operation char(1), stamp timestamp, LIKE REGION EXCLUDING ALL);
CREATE OR REPLACE FUNCTION process_region_audit() RETURNS TRIGGER AS $object_audit$
BEGIN
--
-- Create a row in public.region_hist_audit to reflect the operation performed on region,
-- making use of the special variable TG_OP to work out the operation.
--
IF (TG_OP = 'DELETE') THEN
INSERT INTO public.region_hist SELECT nextval('region_hist_hist_id_seq'), 'D', now(), OLD.*;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO public.region_hist SELECT nextval('region_hist_hist_id_seq'), 'U', now(), NEW.*;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO public.region_hist SELECT nextval('region_hist_hist_id_seq'), 'I', now(), NEW.*;
END IF;
RETURN NULL; -- result is ignored since this is an AFTER trigger
END;
$object_audit$ LANGUAGE plpgsql;
DROP TRIGGER IF EXISTS region_audit on public.region;
CREATE TRIGGER region_audit
AFTER INSERT OR UPDATE OR DELETE ON public.region
FOR EACH ROW EXECUTE PROCEDURE process_region_audit();