首先查看定时任务是否开启:
运行SQL语句:SHOW VARIABLES LIKE '%sc%'
event_scheduler的值为ON表示已经开启.
一开始我们使用mysql可视化工具来手动创建事件:
创建完成后整个实事件是这个样子滴
下面是这些内容的中文解释:
DELIMITER $$
-- SET GLOBAL event_scheduler = ON$$ -- required for event to execute but not create
//在jixiu_db库中创建一个名为test_event的事件
CREATE /*[DEFINER = { user | CURRENT_USER }]*/ EVENT `jixiu_db`.`test_event`
//计划任务,有两种设定计划任务的方式:
ON SCHEDULE
/* uncomment the example below you want to use */
-- scheduleexample 1: run once
//第一种AT时间戳,用来完成单词的计划任务
-- AT 'YYYY-MM-DD HH:MM.SS'/CURRENT_TIMESTAMP { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] }
-- scheduleexample 2: run at intervals forever after creation
//第二种,EVERY时间(单位)的数量时间单位[STARTS时间戳][ENDS时间戳],用来完成重复的计划任务
-- EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
-- scheduleexample 3: specified start time, end time and interval for execution
/*EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
STARTS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1[HOUR|MONTH|WEEK|DAY|MINUTE|...] }
ENDS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] } */
//表示这个事件补在发生的时候,PRESERVE表示时间执行完毕后不会被删除掉
/*[ON COMPLETION [NOT] PRESERVE]
//表示设定事件的状态,一个执行,一个不执行
[ENABLE | DISABLE]
//注释
[COMMENT 'comment']*/
//sql_statements表示该事件要执行的sql语句或者存储过程
DO
BEGIN
(sql_statements)
END$$
DELIMITER ;
sql语句直接创建事件:
CREATE EVENT event_name
ON SCHEDULE
ON COMPLETION PRESERVE
DO
删除事件:
DROP EVENT
event_name
实例:
每天凌晨执行更新操作:
CREATE EVENT master_event
ON SCHEDULE EVERY 1 DAY STARTS '2019-11-11 16:13:00'
ON COMPLETION PRESERVE
DO
UPDATE db_classify_master SET whetherSign=0 WHERE whetherSign=1
每隔一秒执行master_test存储过程:
CREATE EVENT IF NOT EXISTS e_test
ON SCHEDULE EVERY 1 SECOND
ON COMPLETION PRESERVE
DO CALL master_test();