❶ java 不能調用sql的觸發器
觸發器不是直接調用的,而是DB伺服器根據事件觸發的。
❷ 如何用java創建觸發器
java是應用程序,可以通過jdbc介面調用觸發器:
create or replace trigger bj_customer
before update on customer
for each row
begin
update order set
cu_no=:new.cu_no,
cu_name=:new.cu_name,
cu_address=:new.cu_addess,
where cu_no=:old.cu_no;
end;
調用executeUpdate方法即可
❸ 關於mysql中的觸發器能調用JAVA嗎的搜索推薦
肯定不可以,mysql不能調用java代碼,但是可以在java中創建觸發器
1.使用SQL創建觸發器
DELIMITER$$CREATETRIGGER`catefiles_trigger`AFTERINSERTON`catefiles`FOREACHROWbegin
declarenum1int;setnum1=(selectnumfromest_client_catescan_statuswherecateid=new.cateIdandtaskid=new.taskIdandclientid=new.clientId);if(num1>=0)thenupdatecatescan_statussetnum=num1+1wherecateid=new.cateIdandtaskid=new.taskIdandclientid=new.clientId;elseinsertcatescan_status(cateid,num,status,taskid,clientid)values(new.cateId,1,0,new.taskid,new.clientId);endif;end$$
2.在Java程序里創建觸發器
Stringsql=+"CREATETRIGGERcatefiles_"
+"begin"
+"declarescannumint;"
+"setscannum=(selectnumfromest_client_catescan_statuswhere"
+"cateid=new.cateIdandtaskid=new.taskIdandclientid=new.clientId);"
+"if(scannum>=0)then"
+"updatecatescan_statussetnum=scannum+1wherecateid=new.cateIdandtaskid=new.taskIdandclientid=new.clientId;"
+"else"
+"insertcatescan_status(cateid,num,status,taskid,clientid)values(new.cateId,1,0,new.taskid,new.clientId);"
+"endif;"
+"end";
Connectioncon=DbConnectionManager.getConnection();
PreparedStatementpstmt=con.prepareStatement(sql);
pstmt.execute();
3.可以看出區別:在java中創建觸發器,不需要限定符DELIMITER ,加上的話執行過程中會報MySQL語法錯誤
❹ java如何調用MySQL的觸發器
觸發器顧名思意就是在某個動作執行時自動觸發執行的,不用調用,比如你是在add和delete數據時加觸發器,只要你定義的對,資料庫在向你指定的那張表add和delete數據時,該觸發器就會自動觸發
❺ 在java里怎麼觸發sqlserver2000中的觸發器啊
觸發器是與表及操作相關的。
比如是 A表的INSERT動作時觸發。
那麼你調用INSERT語句時,觸 發器就動作了。不用寫監聽。
❻ java開發時觸發器有什麼作用,什麼開發場景時會用到
比如說你emp和dept兩張表是有外鍵關聯的,當emp存在相關數據時,dept無法刪除數據,這時候就可以寫個觸發器,讓他可以刪除的同時並對emp表的依賴數據發生變化
❼ 著急!Java怎樣調用存諸過程和觸發器
其實跟普通的JDBC使用方法是一樣的。只不過是用的類不同。給你個例子看看吧。其中的call set_death_age(?, ?)就是存儲過程名,變數同樣用佔位符?代替。
try{
int age = 39;
String poetName = "dylan thomas";
CallableStatement proc = connection.prepareCall("{ call set_death_age(?, ?) }");
proc.setString(1, poetName);
proc.setInt(2, age);
cs.execute(); }
catch (SQLException e){e.printStackTrace();}
❽ oracle觸發器調用一個Java類
把JAVA程序LOAD進oracle
在$ORACLE_HOME/bin目錄下有個LOADJAVA命令,使用這個命令將剛寫好的JAVA程序LOAD進資料庫。
loadjava -user test/test@test -o -v -f -r Main.java
如果成功的話,會列印出來信息提示成功,若程序有編譯錯誤的話,也會提示你錯誤的地方。
3。修改許可權
因為我的這個JAVA程序里涉及到對文件的讀寫操作,所以要先修改許可權。
首先以管理員身份登錄進資料庫
sqlplus / as sysdba
然後執行
begin
dbms_java.grant_permission('TEST','SYS:java.io.FilePermission','/var/spool/cron/oracle','read,write,execute,delete');
end;
/
執行完畢後,在資料庫里執行上述JAVA程序時,就擁有讀寫該文件的許可權了。
4。創建存儲過程
進入到資料庫,我是在SQLPLUS命令行
create or replace procere Modify(name varchar2) as language java name 'Main.modify(java.lang.String)';
/
會提示創建存儲過程成功。
5。增加trigger
我是在TOAD里直接針對某個表增加trigger,所以我只寫出關鍵部分的代碼
begin
if :old.name = 'time' then
Modify(:new.value);
end if;
end;
至此,在ORACLE的trigger里調用JAVA程序就完成了,後來的實驗證明,每當更新這個表時,都確實執行了該JAVA程序,完成了對文件的讀寫。
❾ 我寫了一個觸發器,請問在Java里怎樣調用
資料庫的觸發器嗎?如果是的話,在你對相應數據表進行增改刪操作時,會根據條件來觸發的
❿ 在oracle或者db2中寫一個觸發器來調試java程序,並且壓力性能,完大蝦們給予賜教
觸發器(trigger)是個特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會激活它執行。觸發器經常用於加強數據的完整性約束和業務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 數據字典中查到。
至於你想在觸發器里調試java程序。 我覺得很奇怪~~~~~
如果oracle的觸發器都用來調試java程序,那要 eclipse幹啥?