CREATE OR REPLACE FUNCTION check_com_meter() RETURNS TRIGGER AS ' DECLARE times TIMESTAMP WITHOUT TIME ZONE; time_interval INTEGER; rows INTEGER; reading double precision; average double precision; seconds INTEGER; new_time timestamp; BEGIN SELECT INTO times, reading timestamp, readings FROM com_meter WHERE did = NEW.did ORDER BY timestamp DESC; RAISE NOTICE ''test''; IF NOT FOUND THEN RETURN NEW; ELSE time_interval := EXTRACT(EPOCH FROM NEW.timestamp) - EXTRACT(EPOCH FROM times); rows := time_interval / 900; RAISE NOTICE ''zzz %'', rows; RAISE NOTICE ''xxx %'', time_interval; IF rows > 1 THEN FOR i IN 1 .. rows-1 LOOP seconds := EXTRACT(EPOCH FROM times) + 900*i; --new_time := "2005-03-31 17:30:00"; INSERT INTO com_meter (did,timestamp, readings) VALUES (NEW.did, "2005-03-31 17:30:00", NEW.readings); --RAISE NOTICE ''%<%<%<%'',times, reading, seconds,new_time; END LOOP; ELSE IF rows = 0 THEN return NULL; END IF; END IF; RETURN NEW; END IF; END; ' LANGUAGE 'plpgsql';