触发器代码:
create or replace trigger gps_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;今天的第三次求救了,我往vehicle_gps_history表插入数据,同时触发器更新GIS_VEHICLE_GPS表,只有更新GIS_VEHICLE_GPS表的第一条数据,当插入的数据的VEHICLE_ID不等于GIS_VEHICLE_GPS的第一条记录的VEHICLE_ID时,无法更新。也就是说只能更新第一条记录,为什么啊?
create or replace trigger gps_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;今天的第三次求救了,我往vehicle_gps_history表插入数据,同时触发器更新GIS_VEHICLE_GPS表,只有更新GIS_VEHICLE_GPS表的第一条数据,当插入的数据的VEHICLE_ID不等于GIS_VEHICLE_GPS的第一条记录的VEHICLE_ID时,无法更新。也就是说只能更新第一条记录,为什么啊?
什么第一条数据啊,不懂
你用update的话你下次要更新一个新值又没有
你的道理我懂,现在又发现新问题了,我现在的数据库是Oracle,我的gis_vehicle_gps中的数据是从sql Server数据库插入的,采用的是链接服务器+SQL语句的方式,从SQL Server数据库的表读取数据到Oracle数据库,读取的数据无法用触发器更新,但是我在Oracle端手动添加记录到gis_vehicle_gps表后,再往vehicle_gps_history表插入相同VEHICLE_ID的数据时,就可以更新。
怀疑是从SQL Server查询插入的数据无法更新。
是呀看你问三次了 要满足这条件
where VEHICLE_ID = :new.VEHICLE_ID;自己做个两表的查询 加个要更新条件 :new.VEHICLE_ID 就知道了