create or replace trigger tri_test
  after insert or update or delete  on  t    
  for each row 
declare 
  -- local variables here 
  v_tablename  nvarchar2(40); 
  v_errcode varchar2(100);
  v_errinf varchar2(100);
  --e exception;
begin 
  v_tablename := 'test';  --需修改 
  if inserting then 
    --处理插入 
    insert into test@water 
    values 
    ( 
    :NEW.id,
    :NEW.username,
    :NEW.password
    ); 
    
    --raise e;
  end if; 
  if deleting then
      delete from test@water where ID=:old.ID; 
  end if;
  if updating then
     update test@water 
     set  
            username=:NEW.username,
            password=:NEW.password
    where ID=:old.ID;
  end if;
 
  exception 
   when others then
      v_errcode:=SQLCODE;
      v_errinf:=SUBSTR(SQLERRM,1,200);
      insert into trig_syncerror values (v_tablename,system,v_errcode,v_errinf); 
      dbms_output.put_line('err!');
end;
/上段程序 异常处理部分哪里出错了? 求高手指导