CREATE OR REPLACE FUNCTION createpar() RETURNS trigger AS $BODY$ DECLARE partition_date TEXT; partition TEXT; -- fileformat TEXT; BEGIN -- partition_date := to_char(NEW."CreatedTime", 'YYYY_WW'); partition := TG_TABLE_NAME || '_' ||partition_date; IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=partition) THEN RAISE NOTICE 'Creating partition: %',partition; -- Should add correct week check EXECUTE 'CREATE TABLE ' || partition || ' (check (to_char("CreatedTime", ''YYYY_WW'') = ''' || partition_date || ''')) INHERITS (' || TG_TABLE_NAME || ');'; END IF; point :=NEW."Point"; EXECUTE 'INSERT INTO ' || partition || '(id, "Speed", "CreatedTime", "Course", "Altitude", "Sat", "Point", "Car_id", "SensorData" ) VALUES (' || NEW."id" ||','|| NEW."Speed" || ',''' || NEW."CreatedTime"|| ''',' || NEW."Course"||','|| NEW."Altitude" || ','|| NEW."Sat" || ',' || ' ''' || point || '''::geometry' ||','|| NEW."Car_id" || ',''' || NEW."SensorData" || ''') RETURNING id;'; -- INSERT INTO partition VALUES(NEW.*); RETURN NULL; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100;