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';