2013-05-11 91 views
0

我已通过JDBC创建了触发器,该触发器不会触发。我已经检查了它在user_objects表中的有效性以及它的有效和启用。我试图使用sqlplus控制台创建触发器,并成功解雇,所以我可能会出错?任何想法?使用JDBC创建的Oracle触发器不会触发

这里是我的触发器:

create or replace trigger t2 
after update of FIRST_NAME on QWERTY 
referencing new as newv old as oldv 
for each row 
begin 
if :oldv.FIRST_NAME != :newv.FIRST_NAME then 
insert into log values(user,sysdate,'QWERTY','FIRST_NAME',:oldv.FIRST_NAME,:newv.FIRST_NAME); 
end if; 
end; 

我都试过execute(query)和StatementexecuteUpdate(query)功能,并试图PreparedStatement太多,但还没有运气。

+0

你在创建触发器后用'execute'和'executeQuery'或者'update'创建了触发器?你有没有提交更新 - 你能看到更新后的值(并且你正在检查另一个会话)吗? – 2013-05-11 21:14:23

+0

“查询”变量的内容究竟如何?请向我们展示完整的代码。您还可以查询'all_errors'视图来检查您是否可能在通过JDBC运行的SQL中出现语法错误。 – 2013-05-11 22:58:12

+0

你不能创建触发器与executeQuery(),是的,我没有提交,并可以看到更新值...问题是与JDBC,事件触发时,我在sqlplus提示中创建触发器,我已检查触发器的有效性user_objects视图,并且它是有效的 – 2013-05-12 08:27:20

回答

0

你没有考虑到你的代码中的空值 - 值得研究,我想。