mysql定時刪除6個月前的表
阿新 • • 發佈:2019-02-06
檢視定時是否開啟:
檢視event是否開啟 : SHOW VARIABLES LIKE '%event_sche%';
將事件計劃開啟 : SET GLOBAL event_scheduler = 1;
將事件計劃關閉 : SET GLOBAL event_scheduler = 0;
程式碼:
BEGIN -- 儲存表名 DECLARE v_tableName varchar(40) DEFAULT 0; -- 時間 -- DECLARE v_datetime DATETIME; -- DECLARE v_datetime TIMESTAMP; -- 遍歷結束標記 DECLARE done INT DEFAULT FALSE; -- 找出要刪除的表名 DECLARE cursor_table CURSOR FOR SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_NAME like 'info_illegal_web_%' AND TABLE_SCHEMA = 'ydb_illegal_data_his' AND LENGTH(TABLE_NAME) = 25; -- 將結束標誌繫結到遊標 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 設定時間 -- SET v_datetime = UNIX_TIMESTAMP(DATE_SUB(SYSDATE(),INTERVAL 3 DAY)); -- 開啟遊標 OPEN cursor_table; -- 開始迴圈 read_loop: LOOP FETCH cursor_table INTO v_tableName; -- 如果沒有資料,退出 IF done THEN LEAVE read_loop; END IF; -- 刪除資料 IF DATE(SUBSTR(v_tableName, 18)) <= DATE_SUB(CURDATE(),INTERVAL 6 MONTH) THEN SET @STMT :=CONCAT("DROP TABLE ",v_tableName); PREPARE STMT FROM @STMT; EXECUTE STMT; DEALLOCATE PREPARE STMT; END IF; END LOOP; END