2013-05-11 94 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

你沒有考慮到你的代碼中的空值 - 值得研究,我想。