触发器无法更新插入的数据

lg_aaron 2010-09-10 01:07:07
触发器代码:
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中的数据。请高手帮忙看一下
...全文
161 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojuju10 2010-09-10
  • 打赏
  • 举报
回复
你要插入的表记录,在更新表中找不到

where VEHICLE_ID = :NEW.VEHICLE_ID; 连接后记录为空
lg_aaron 2010-09-10
  • 打赏
  • 举报
回复
我就纳闷了,我建个测试表,用同样的方式写触发器,就可以更新。而用上述两个表就是不行。
Dream_1986 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyisky84 的回复:]

你触发器是建在vehicle_gps_history上面的

你向gps_history_triger 表插入数据,怎么触发啊?
[/Quote]
--建表
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目的
minitoy 2010-09-10
  • 打赏
  • 举报
回复
呵呵.
lg_aaron 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 lg_aaron 的回复:]
触发器代码:
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……
[/Quote]

不好意思,写错了,我就是往vehicle_gps_history表写数据,然后去触发更新gis_vehicle_gps表
  • 打赏
  • 举报
回复
--触发器代码
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
  • 打赏
  • 举报
回复
你的gis_vehicle_gps表目前是不是为空啊
你先给这个表插入一个值
心中的彩虹 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 lg_aaron 的回复:]
触发器代码:
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……
[/Quote]







触发器代码:
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中的数据









wuyisky84 2010-09-10
  • 打赏
  • 举报
回复
你触发器是建在vehicle_gps_history上面的

你向gps_history_triger 表插入数据,怎么触发啊?

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧