CREATE OR REPLACE FUNCTION info_trigger()
RETURNS TRIGGER AS $$
declare exists_year int default 0;
declare infos varchar default ‘test_’;
declare strSql varchar default ‘’;
BEGIN
infos:= infos||split_part(NEW.date ,'-', 1)||'_'||split_part(NEW.date ,'-', 2);
select count(*) into exists_year from pg_class where relname = infos;
IF ( exists_year > 0 ) THEN
strSql := 'INSERT INTO '||infos||' select $1.* ' ;
EXECUTE strSQL USING NEW;
ELSE
EXECUTE (
' create table ' ||infos||' (
) INHERITS (test)'
);
strSql := 'INSERT INTO '||infos||' select $1.* ' ;
EXECUTE strSQL USING NEW;
END IF;
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
CREATE TRIGGER my_info_trigger
BEFORE INSERT ON test
FOR EACH ROW EXECUTE PROCEDURE info_trigger();