Implementing history of PostgreSQL table Implementing history of PostgreSQL table database database

Implementing history of PostgreSQL table


I managed to implement it.

CREATE TABLE "ps_counters_history"(  "id" serial PRIMARY KEY,  "timestamp" timestamp NOT NULL DEFAULT clock_timestamp(),  "psid" integer NOT NULL,  "counter" bigint[] NOT NULL);CREATE OR REPLACE FUNCTION ps_counters_history_trigger()  RETURNS trigger AS$BODY$  DECLARE    table_name text;  BEGIN    table_name := 'ps_counters_history_' || to_char(CURRENT_DATE, 'yyyy_mm');    IF NOT EXISTS (SELECT 1 FROM pg_class WHERE relname = table_name)    THEN      EXECUTE 'CREATE TABLE IF NOT EXISTS ' || table_name ||              ' () INHERITS (ps_counters_history);';    END IF;    EXECUTE 'INSERT INTO ' || table_name ||            '(psid, counter) VALUES ($1.psid, $1.counter);' USING NEW;    RETURN NEW;  END$BODY$  LANGUAGE plpgsql;CREATE TRIGGER ps_counters_history_triggerAFTER INSERT OR UPDATE ON ps_counters FOR EACH ROWEXECUTE PROCEDURE ps_counters_history_trigger();