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;
两个表中就都有记录了。