小白菜,追逐吧,堅持吧!——Tenlay_Li
一. 檢視event_scheduler是否開啟
1) SHOW VARIABLES LIKE 'event_scheduler';
2) SELECT @@event_scheduler;
3) SHOW PROCESSLIST;
二. 開啟event_scheduler
1) SET GLOBAL event_scheduler = 1;
2) SET GLOBAL event_scheduler = ON;
3) SET @@global.event_scheduler = 1;
4) SET @@global.event_scheduler = ON;
三. event(事件)和procedure(儲存過程)配合使用
檢視和建立儲存過程需要使用者具有create routine許可權,呼叫儲存過程執行時需要使用excute許可權,儲存過程呼叫具體的SQL語句時,需要使用者具有執行該SQL的許可權。
檢視使用者許可權:SELECT HOST,USER,Event_priv FROM mysql.user;
檢視當前登陸的使用者和資料庫:SELECT CURRENT_USER(), SCHEMA();
下面例項操作
#1. 定義儲存過程
DELIMITER $$
DROP PROCEDURE IF EXISTS update_workYear$$
CREATE PROCEDURE update_workYear()
BEGIN
UPDATE sys_user SET work_year = concat (
CONCAT(TIMESTAMPDIFF(YEAR,entry_date,CURDATE()),"年") ,
CONCAT(MOD(TIMESTAMPDIFF(MONTH,entry_date,CURDATE()),12),"月") );
END $$
DELIMITER;
#2. 設定定時事件,每間隔1 MONTH 呼叫一次儲存過程update_workYear();
DELIMITER $$
DROP EVENT IF EXISTS event_update_workYear $$
CREATE EVENT event_update_workYear
ON SCHEDULE EVERY 1 MONTH
ON COMPLETION PRESERVE
DO BEGIN
CALL update_workYear();
END $$
DELIMITER;
#3. 啟動定時器
ALTER EVENT event_update_workYear ON COMPLETION PRESERVE ENABLE;