小弟写这个触发器的目地是:将插入DBZ1101_H表数据,以每小时为一个时间段,求平均数,最终,表内保存的只是每小时一条数据,是这一小时的一个平均数.比如说,从00:00:00开始到01:00:00之间可能有若干条数据插入该表,但我每次都把新插入的数据与以前的一条数据求平均值,然后以CJSJ字段为01:00:00的方式保存为一条数据.但是,在我插入数据的时候,发现CJSJ字段并没有按照我的意思写成01:00:00,依然是当前的时间,请问这是为什么啊?而且数据库中还是保留了我插入的数据啊.CREATE OR REPLACE TRIGGER dbz1101_h_trig
BEFORE INSERT
ON dbz1101_h
FOR EACH ROW
BEGIN
  IF To_Char(:NEW.CJSJ,'HH24:MM:SS') >'00:00:00' AND To_Char(:NEW.CJSJ,'HH24:MM:SS') <= '01:00:00' THEN
    UPDATE DBZ1101_H SET
                     CJSJ  = To_Date(To_Char(SYSDATE,'YYYY-MM-DD')||'01:00:00','YYYY-MM-DD HH24:MI:SS'),
                     YL  = (:OLD.YL + :NEW.YL) / 2,
                     YC  = (:OLD.YC + :NEW.YC) / 2,
                     GD = (:OLD.GD + :NEW.GD) / 2,
                     ZLLL = (:OLD.ZLLL + :NEW.ZLLL) / 2,
                     RL = (:OLD.RL + :NEW.RL) / 2,
                     WD = (:OLD.WD + :NEW.WD) / 2,
                     LJLL = :NEW.LJLL
    WHERE To_Char(CJSJ,'HH24:MM:SS') > '00:00:00' AND To_Char(:NEW.CJSJ,'HH24:MM:SS') <= '01:00:00';
   -- DELETE dbz1101_H WHERE CJSJ BETWEEN SYSDATE -Trunc(24/(24*60)) AND SYSDATE + Trunc(24/(24*60));
  END IF;
END;