表: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
新手不知错误在哪,请大家帮忙
------最佳解决方案--------------------
目测触发器编译错误
用pl/sql的REPORTS菜单下有一个complication errors选项,定位到该触发器,看看有什么编译错误
如果是pls-00103错的话,多数是全角空格问题,复制粘贴的结果,建议重新写一遍
------其他解决方案--------------------
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-12
SQL> 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:39
SQL> update a001 set id=2;
1 row updated.
SQL> commit;
Commit complete.
SQL> select * from a001;
ID UDATE
---------- -------------------
2 2012/10/09 22:53:12
SQL>
------其他解决方案--------------------
完全没有问题!
------其他解决方案--------------------
重新执行你的触发器脚本之后 show error 看看具体错误出现在哪里..
------其他解决方案--------------------
进pl/sql查看该触发器图标是打叉的,状态提示invalid,执行update语句如:
update mzdx set col1='1' where id=1
报以上的错:MZDX_TRIGGER is invalid and failed re-validation
非法触发器非法在哪呢?
------其他解决方案--------------------