一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行;
二、如何开启mysql定时任务(事件)?1、查看mysql定时任务当前状态是ON还是OFF:
sql命令:
showvariableslike'event_scheduler'
结果如下:
event_scheduler=OFF:代表未开启;ON代表开启;
2、开启mysql定时任务
sql命令:
setglobalevent_scheduler=on
三、创建mysql定时任务(事件):实例1、新建一张user表
sql命令:
DROPTABLEIFEXISTS`user`;
CREATETABLE`user`(
`id`bigint(20)NOTNULLAUTO_INCREMENT,
`name`varchar(200)NOTNULL,
`address`varchar(500)NOTNULL,
`addtime`datetimeNOTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
2、新建mysql定时任务(新建事件)
注意:mysql事件有两种事件类型,一个是间隔触发,另一个是特定事件触发。
类型一:每隔一分钟插入一条数据:参数说明:
DEFINER:创建者;
ON COMPLETION [NOT] PRESERVE :表示当事件不会再发生的情况下,删除事件(注意特定时间执行的事件,如果设置了该参数,执行完毕后,事件将被删除,不想删除的话可以设置成ON COMPLETION PRESERVE);
ENABLE:表示系统将执行这个事件;
sql命令:
DROPEVENTIFEXISTS`event_minute`;
DELIMITER;;
CREATEDEFINER=`root`@`localhost`EVENT`event_minute`ONSCHEDULEEVERY1MINUTESTARTS'2017-07-2016:00:43'ONCOMPLETIONNOTPRESERVEENABLEDOBEGIN
INSERTINTOUSER(name,address,addtime)VALUES('test1','test1',now()); INSERTINTOUSER(name,address,addtime)VALUES('test2','test2',now());END
;;
DELIMITER;
类型二:特定时间插入一条数据,如2017-07-2016:05:00参数说明:
DEFINER:创建者;
ON COMPLETION [NOT] PRESERVE :表示当事件不会再发生的情况下,删除事件(注意特定时间执行的事件,如果设置了该参数,执行完毕后,事件将被删除,不想删除的话可以设置成ON COMPLETION PRESERVE);
ENABLE:表示系统将执行这个事件;
sql命令:
DROPEVENTIFEXISTS`event_at`;
DELIMITER;;
CREATEDEFINER=`root`@`localhost`EVENT`event_at`ONSCHEDULEAT'2017-07-2016:05:00'ONCOMPLETIONNOTPRESERVEENABLEDOBEGIN
INSERTINTOUSER(name,address,addtime)VALUES('AT','AT',now());END
;;
DELIMITER;
两种数据插入结果如下图:
我如何能知道我有哪些mysql定时任务计划?我要计划了定时任务10个、100个、甚至千个又应该如何全部列出来?
sql命令、方法一:结果如下:
结果如下:
如果我已经设置了很多的mysql定里任务计划,我想删除某个mysql定时任务又应该怎么办?
sql命令:
注意:event_minute是你创建定时任务计划的名字;删除mysql定时计划最好是结合上面的方法;
而且,上面“查看mysql定时任务计划列表”的时候也可以直接通过phpmyadmin来删除;
NEW
HOT