1.創建一個表
CREATE TABLE aaa (timeline TIMESTAMP);
2.創建存儲過程test
CREATE PROCEDURE test ()
BEGIN
update examinfo SET endtime = now() WHERE id = 14;
END;
3.創建事件e_test
CREATE EVENT if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
##每隔30秒將執行存儲過程test,將當前時間更新到表中id=14的記錄的endtime字段中去
4.查看event是否開啟
show variables like ‘%sche%’;
show variables like ‘log_%’;
5.關閉事件任務
SET GLOBAL event_scheduler = OFF;
alter event e_test ON COMPLETION PRESERVE DISABLE;
6.開戶事件任務
SET GLOBAL event_scheduler = ON;
alter event e_test ON COMPLETION PRESERVE ENABLE;
7.舉例如下:
1) 首先來看一個簡單的例子來演示每秒插入一條記錄到數據表
CREATE EVENT e_test_insert
ON SCHEDULE EVERY 1 SECOND
DO INSERT INTO aaa VALUES (CURRENT_TIMESTAMP);
等待3秒鍾后,再執行查詢看看:
mysql> SELECT * FROM aaa;
±--------------------+
| timeline |
±--------------------+
| 2007-07-18 20:44:26 |
| 2007-07-18 20:44:27 |
| 2007-07-18 20:44:28 |
±--------------------+
2) 5天后清空test表:
CREATE EVENT e_test
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE aaa;
3) 2007年7月20日12點整清空test表:
CREATE EVENT e_test
ON SCHEDULE AT TIMESTAMP ‘2007-07-20 12:00:00’
DO TRUNCATE TABLE aaa;
4) 每天定時清空test表:
CREATE EVENT e_test_delete
ON SCHEDULE EVERY 1 HOUR
DO TRUNCATE TABLE aaa;
5) 5天后開啟每天定時清空test表:
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE aaa;
6) 每天定時清空test表,5天后停止執行:
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE aaa;
7) 5天后開啟每天定時清空test表,一個月后停止執行:
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
DO TRUNCATE TABLE aaa;
[ON COMPLETION [NOT] PRESERVE]可以設置這個事件是執行一次還是持久執行,默認為NOT PRESERVE。
8) 每天定時清空test表(只執行一次,任務完成后就終止該事件):
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ON COMPLETION NOT PRESERVE
DO TRUNCATE TABLE aaa;
[ENABLE | DISABLE]可是設置該事件創建后狀態是否開啟或關閉,默認為ENABLE。
[COMMENT ‘comment’]可以給該事件加上注釋。
文章鏈接:https://blog.csdn.net/qq_26562641/article/details/53301407