触发器代码:
create or replace trigger gps_history_triger
  before insert
  ON vehicle_gps_history
  for each row
begin
  update gis_vehicle_gps  
     set LONGITUDE = :NEW.LONGITUDE,
         LATITUDE = :NEW.LATITUDE,
         KPM = :NEW.KPM,
         ANGLE = :NEW.ANGLE,
         MSG_REC_TIME = :NEW.MSG_REC_TIME,
         VEHICLE_NUM  = :NEW.VEHICLE_NUM 
   where VEHICLE_ID = :NEW.VEHICLE_ID;
end;我往表gps_history_triger表中插入数据,触发器无法更新gis_vehicle_gps中的数据。请高手帮忙看一下

解决方案 »

  1.   

    你触发器是建在vehicle_gps_history上面的你向gps_history_triger 表插入数据,怎么触发啊?
      

  2.   


    触发器代码:
    create or replace trigger gps_history_triger
      before insert
      ON vehicle_gps_history
      for each row
    begin
      update gis_vehicle_gps   
      set LONGITUDE = :NEW.LONGITUDE,
      LATITUDE = :NEW.LATITUDE,
      KPM = :NEW.KPM,
      ANGLE = :NEW.ANGLE,
      MSG_REC_TIME = :NEW.MSG_REC_TIME,
      VEHICLE_NUM = :NEW.VEHICLE_NUM  
      where VEHICLE_ID = :NEW.VEHICLE_ID;
    end;我往表gps_history_triger表中插入数据,触发器无法更新gis_vehicle_gps中的数据。请高手帮忙看一下难怪先前的不行,让你贴出操作代码 
    是要往表vehicle_gps_history表中插入数据,触发器才能更新gis_vehicle_gps中的数据
      

  3.   

    你的gis_vehicle_gps表目前是不是为空啊
    你先给这个表插入一个值
      

  4.   

    --触发器代码
    create or replace trigger dept_log_tri
    before insert on dept
    for each row
    begin
    update deptlog set
    deptnolog=:new.deptno,
    dnamelog=:new.dname,
    loclog=:new.loc;
    end;
    SQL> select * from deptlog;--先查询deptlog表为空未选定行SQL> insert into dept values(60,'nanchang','jx');已创建 1 行。SQL> commit;提交完成。SQL> select * from deptlog;--往dept表中插入数据后查询deptlog表还是为空(你现在的情况)未选定行SQL> insert into deptlog values(60,'nanchang','jx');--往deptlog表中插入数据已创建 1 行。SQL> commit;提交完成。SQL> insert into dept values(70,'jiujiang','jx');--再往dept表中插入数据已创建 1 行。SQL> commit;提交完成。SQL> select * from deptlog;--得到你要的结果了 DEPTNOLOG DNAMELOG       LOCLOG
    ---------- -------------- -------------
            70 jiujiang       jx
      

  5.   


    不好意思,写错了,我就是往vehicle_gps_history表写数据,然后去触发更新gis_vehicle_gps表
      

  6.   

    --建表
    create table vehicle_gps_history
    (LONGITUDE varchar(10),
     LATITUDE varchar(10),
     KPM varchar(10),
     ANGLE varchar(10),
     MSG_REC_TIME varchar(10),
     VEHICLE_NUM varchar(10),
     VEHICLE_ID  int );
     create table gis_vehicle_gps as select * from vehicle_gps_history;
    ---触发器
     create or replace trigger gps_history_triger
      before insert
      ON vehicle_gps_history
      for each row
    begin
      update gis_vehicle_gps  
      set LONGITUDE = :NEW.LONGITUDE,
      LATITUDE = :NEW.LATITUDE,
      KPM = :NEW.KPM,
      ANGLE = :NEW.ANGLE,
      MSG_REC_TIME = :NEW.MSG_REC_TIME,
      VEHICLE_NUM = :NEW.VEHICLE_NUM 
      where VEHICLE_ID = :NEW.VEHICLE_ID;
    end;
     --测试数据
     insert into gis_vehicle_gps values('','','','','','',23);
     
     insert into vehicle_gps_history values('aa3','bb3','ec3','ef3','rt33','tt',23);
    --查询结果
    达到更新表gis_vehicle_gps目的
      

  7.   

    你要插入的表记录,在更新表中找不到 where VEHICLE_ID = :NEW.VEHICLE_ID; 连接后记录为空