日期:2014-05-16  浏览次数:21760 次

ORA-04098:触发器无效且未通过重新验证

create table testcb (t_id number(4), t_name varchar2(20), t_age number(2), t_sex char);
create table testcb_log( l_user varchar2(15), l_type varchar2(15), l_date varchar2(30));

create or replace trigger testcb_trigger
after delete or insert or update on testcb
declare v_type testcb_log.l_type%TYPE;
begin
if inserting then
--insert触发
v_type:='insert';
dbms_output.put_line('记录已经成功插入,并已记录到日志');
elsif updating then
--update触发
v_type:='update';
dbms_output.put_line('记录已经成功更新,并已记录到日志');
elsif deleting then 
v_type:='delete';
dbms_output.put_line('记录已经成功删除,并已记录到日志');
end if;
insert into testcb_log values(user, v_tpye, to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'));
end;


创建触发器成功,没什么问题。
但是执行insert触发的时候:
insert into testcb values(101,'chenbing',24,'M');
报了“ORA-04098:触发器无效且未通过重新验证”错误!

本人oracle菜鸟!请大神协助排查问题!万分感激!
------最佳解决方案--------------------

insert into testcb_log values(user, v_tpye, to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'));

--v_type 不是 v_tpye

------其他解决方案--------------------
汗!!!!

执行创建的语句居然不报错!!

------其他解决方案--------------------
书写错误是很平常的,以后书写细心点就行了。