1. 程式人生 > >小白菜,追逐吧,堅持吧!——Tenlay_Li

小白菜,追逐吧,堅持吧!——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;