1. 程式人生 > >mysql儲存過程以及定時排程清除資料

mysql儲存過程以及定時排程清除資料

1。 首先mysql必須使用5.1.X以上的版本,因為只有在該版本之上,mysql才提供 儲存過程以及EVENT(事件)支援。

    檢視mysql版本可以使用命令:SELECT VERSION(); 進行檢視。

2。 分別使用  SHOW VARIABLES LIKE 'performance_schema';  以及  SHOW VARIABLES LIKE 'event_scheduler';  命令,檢視

    這倆個數值的狀態,均需要 為 NO 時,才能正常使用。預設狀態為 OFF,請自行上網查詢命令,修改其狀態為 NO 即可。

   eg:  SET GLOBAL event_scheduler=1  修改事件命令。

3.   直接使用SQLYog等客戶端連線工作,執行如下命令建立物件。

      建立一個儲存過程的例子命令,如下:

DELIMITER $$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    PROCEDURE `test`.`cleanCaptcha`()
    /*LANGUAGE SQL
    | [NOT] DETERMINISTIC
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
    | SQL SECURITY { DEFINER | INVOKER }
    | COMMENT 'string'*/
    BEGIN
	DELETE FROM ANNOUNCEMENT WHERE TIMESTAMPDIFF(MINUTE,CREATE_TIME,NOW())>3;
    END$$

DELIMITER ;

        建立一個event事件命令,如下:
-- 建立事件 event:event_name
CREATE EVENT cleanCaptchaEvent
    -- 該事件從2013-01-23 00:30:00開始每5分鐘執行一次
    ON SCHEDULE EVERY 5 MINUTE STARTS NOW()
    ON COMPLETION PRESERVE
    
 -- 呼叫上面寫的 PROCEDURE  
DO CALL cleanCaptcha();
//
DELIMITER ;


4。 使用 SELECT * FROM information_schema.`EVENTS` 命令可以檢視具體event執行的相關資訊。

5。 以上方式操作後,就能實現mysql資料庫自行定時呼叫儲存過程。