Oracle触发器新手问题 ,求助
create or replace trigger WMT_ORIDATA_ST_RAIN_RE
before insert  on WMT_ORIDATA FOR EACH ROW
begin
 insert into ST_RAIN_RE(stcd,tm,R,O_R) values (:NEW.STCD,:NEW.collecttime,:NEW.CHANGES,:NEW.CHANGES);
end;
当插入发生时候把插入的结果同步保存到另外一个表中
这么写不对吗?
我插入了一条数据 然后触发的那个表没有这条记录
------解决方案-------------------- 引用: create or replace trigger WMT_ORIDATA_ST_RAIN_RE 
before insert  on WMT_ORIDATA FOR EACH ROW 
begin 
 insert into ST_RAIN_RE(stcd,tm,R,O_R) values (:NEW.STCD,:NEW.collecttime,:NEW.CHANGES,:NEW.CHANGES); 
end; 
当插入发生时候把插入的结果同步保存到另外一个表中 
这么写不对吗? 
我插入了一条数据 然后触发的那个表没有这条记录  
Commit;
------解决方案-------------------- 引用: Quote: 引用:  
Quote: 引用:  
create or replace trigger WMT_ORIDATA_ST_RAIN_RE 
before insert  on WMT_ORIDATA FOR EACH ROW 
begin 
 insert into ST_RAIN_RE(stcd,tm,R,O_R) values (:NEW.STCD,:NEW.collecttime,:NEW.CHANGES,:NEW.CHANGES); 
end; 
当插入发生时候把插入的结果同步保存到另外一个表中 
这么写不对吗? 
我插入了一条数据 然后触发的那个表没有这条记录 
 
Commit; 
 
Commit写在哪里? 
insert过后需要commit吧
------解决方案-------------------- 上面的触发器没有问题,是你插入数据之后没有提导致触发器没有执行,
我试了下,在我向表WMT_ORIDATA 中插入数据时没有提交,不光ST_RAIN_RE表中没有记录,
连WMT_ORIDATA 中都没有记录。
然后我在我要插入数据的语句后面添加了commit之后:
insert into wmt_oridata 
  (stcd, collecttime, changes) 
values 
  (v_stcd, v_collecttime, v_changes) 
  commit; 
两个表中就都有记录了。