MySQL儲存過程和定時任務
什麼是儲存過程
儲存例程是儲存在資料庫伺服器上的一組sql語句,這些語句通過在查詢中呼叫指定的名稱來執行。
儲存過程是儲存在資料庫中的一組SQL語句
儲存過程是mysql中定義的方法
可以通過呼叫方法名稱來呼叫更改的方法
儲存過程關聯既是資料庫又是模式
儲存過程的結構
DROP PROCEDURE IF EXISTS $ {proceName} ;分隔符//建立過程$ {proceName} ()( [$ {引數型別}] $ {引數名稱} $ {引數型別})BEGIN
$ {proceBody} END //
DELIMITER ;#執行Proc()儲存過程CALL $ {proceName}();
如何使用
#定義一個簡單的儲存過程#首先確定是否有一個Proc()儲存過程,然後滴落DROP PROCEDURE IF EXISTS PROC;#建立Proc()儲存過程/ *方法說明-@author:$ {Author}-@date:$ {Time}-@param:int-$ {引數名稱}-引數說明-@return:具體資訊* /分隔符//CREATE PROCEDURE PROC()
BEGIN SELECT * FROM使用者; 結束//定界符;#執行Proc()儲存過程呼叫Proc();
請注意,“ DELIMITER //”語句的目的是將MYSQL的終止符設定為//,因為MYSQL的預設語句終止符是分號。為避免與儲存過程聯絡,
衝突的SQL語句終止符需要DELIMITER更改儲存過程的終止符並以END //結束儲存過程。
定義儲存過程後,將使用DelIMITER;恢復預設終止符。DELIMITER也可以將其他符號指定為終止符!
儲存過程的管理
#檢視所有儲存過程資訊顯示程式狀態;#刪除儲存過程刪除過程$ {procedureName} ;#檢視儲存過程的內容資訊顯示建立過程$ {procedureName};
定時任務管理
#定時任務是否開啟顯示變數,例如'%event_sche%';#開啟計時器任務(開始生效)#修改Profile / etc / my.conf
event_scheduler = ON #開啟計時器任務(重新啟動失敗)SET GLOBAL event_scheduler = 1 ;#關閉計時器任務(重新啟動失敗)SET GLOBAL event_scheduler = 0 ;
#檢視所有定時任務資訊演出活動;#定時任務結構
#建立一個定時任務(例如)創造學習EVENT IF NOT EXISTS $ {eventName的} ON每隔SCHEDULE 30第二個
#Execute每30秒開竣工PRESERVE #Eve在定時器任務後,設定為禁用完成後,如果維護的是之前新增是不刪除DO CALL $ {procedureName}();
#啟動一個定時任務ALTER EVENT $ {evenName} ENABLE; #關閉定時任務ALTER EVENT $ {evenName} DISABLE; #刪除定時任務DROP EVENT IF EXISTS $ {evenName} ;
簡單的例子
每個星期一執行儲存過程
#儲存過程(確定今天是否是星期一)DELIMITER // CREATE PROCEDURE p_clear_author_rank_integral ()BEGIN DECLARE weed_index INT DEFAULT 0; SET weed_index = dayofweek(now());
如果weed_index = 2然後
更新使用者集rank_integral = 0 ,其中author.id!= 0 ;
結束IF ;結束//定界符;#定時任務(每天)蠟膏EVENT IF NOT EXISTS e_clear_author_rank_integral
ON SCHEDULE每1天ON COMPLETION PRESERVE
DO CALL p_clear_author_rank_integral();