表:MZDX
其中含日期字段udate现建立触发器,记录创建/修改时间
create or replace trigger mzdx_trigger  
  before insert or       
      update 
  on MZDX --目标表名 
  for each row 
  begin   
    :new.udate :=sysdate;
  end;但更新则出现错误:MZDX_TRIGGER is invalid and failed re-validation新手不知错误在哪,请大家帮忙

解决方案 »

  1.   

    进pl/sql查看该触发器图标是打叉的,状态提示invalid,执行update语句如:
    update mzdx set col1='1' where id=1
    报以上的错:MZDX_TRIGGER is invalid and failed re-validation非法触发器非法在哪呢?
      

  2.   

    重新执行你的触发器脚本之后 show error 看看具体错误出现在哪里..
      

  3.   

    SQL> create table a001(id number,udate date);Table created.SQL> create or replace trigger tri
      2  before insert or update on a001
      3  for each row
      4  begin
      5  :new.udate := sysdate;
      6  end;
      7  /Trigger created.SQL> show error
    No errors.
    SQL> insert into a001(1,sysdate);
    insert into a001(1,sysdate)
                     *
    ERROR at line 1:
    ORA-00928: missing SELECT keyword
    SQL> insert into a001 values (1,sysdate);1 row created.SQL> commit;Commit complete.SQL> select * from a001;        ID UDATE
    ---------- ------------
             1 09-OCT-12SQL> alter session set nls_date_format='yyyy/mm/dd hh24:mi:ss';Session altered.SQL> select * from a001;        ID UDATE
    ---------- -------------------
             1 2012/10/09 22:49:39SQL> update a001 set id=2;1 row updated.SQL> commit;Commit complete.SQL> select * from a001;        ID UDATE
    ---------- -------------------
             2 2012/10/09 22:53:12SQL>
      

  4.   

    目测触发器编译错误
    用pl/sql的REPORTS菜单下有一个complication errors选项,定位到该触发器,看看有什么编译错误如果是pls-00103错的话,多数是全角空格问题,复制粘贴的结果,建议重新写一遍
      

  5.   

    谢谢wvb128,的确是全角空格问题,也谢谢大家,散分