日期:2014-05-16  浏览次数:20675 次

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;

两个表中就都有记录了。