先是確保mysql的定時任務是開啓的
SET GLOBAL event_scheduler = 1;
---或我們可以在配置my.cnf文件 中加上 event_scheduler = 1
或
SET GLOBAL event_scheduler = ON;
關閉的話就設置爲0或off
一 :創建存儲過程
DELITMITER ?? # 將結束符置爲??,因爲在多sql的存儲過程中會用到;,爲了不讓其終止,先將結束符換掉
CREATE PROCEDURE copy_to_new()
BEGIN #存儲過程開始
START TRANSACTION; #開啓事務
INSERT INTO table_copy SELECT * from table_main where time < 'xxx' and time > 'xxx';
DELETE FROM table_main where time < 'xxx' and time > 'xxx';
COMMIT;
END ?? #存儲過程結束
DELIMITER ; #將結束符置爲;
--call copy_to_new 可以調用這個存儲過程
--drop procedure copy_to_new 刪除
二:創建event
CREATE EVENT day_event # 創建event
ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP '2020-01-01 00:00:00' #從這天開始一天執行一次
DO CALL copy_to_new() # 執行內容爲調用這個存儲過程
#這段sql就已經將事件放入定時任務中了
--drop event day_event
三:放進定時器
ALTER EVENT day_event ON COMPLETION PRESERVE ENABLE; #將事件加入定時任務中
查看事件
show create procedure copy_to_new;
將事件從定時器中移除
alter event day_event on completion preserve disable;
查看定時器
select event_name,event_definition,intervel_value,interval_field,status from information_schema.EVENTS;