1、oracle 9i;
2、windows xp;
3、网络正常;
4、数据库中创建了一触发器,如下:(创建成功)create or replace trigger tr_tempupdate
  after update of USER_PASSWORD on user_base 
  referencing new as new_value 
  for each row
declare
  -- local variables here
begin
  insert into TBWEBTOFORUMTEMP(user_id,user_password,USER_NAME,USER_TYPE,OPERATETYPE)values(:new_value.user_id,:new_value.user_password,:new_value.USER_NAME,:new_value.USER_TYPE,1);
end tr_tempupdate;5、写更新语句:Update User_base set user_password='123211' where user_name='hoho'(更新成功)
6、写查询语句:select * from tbwebtoforumtemp(查询成功:有期望的数据)
7、再写更新语句:Update User_base set USER_JIFEN=USER_JIFEN+1 where user_name='hoho'(执行此更新语句报错)
8、第7步报的错误:ora-03113:通信通道的文件结束  、 ora-03114:未连接到oracle
9、问题:第4步中的触发器我是建立在user_base 表的USER_PASSWORD字段上的,为什么我更新user_base 表的其他字段时就报错呢?忘各位有识之士不腻赐教!!!

解决方案 »

  1.   

    数据库以前一直正常的,是我建了那触发器就出现了那样的问题,应当是那触发器的写法不但引起的;
    我建立那触发器的目的是其中的user_base表的USER_PASSWORD字段一更新就把更新信息写到另一临时表中 
      

  2.   

    我认为应该判断有没有更新了USER_PASSWORD的值,
    也就是判断能力USER_PASSWORD这个字段的new_value和old_value是否相等,再执行后面的insert 语句,但你的逻辑不是这样写