MySQL创建一个固定频率执行且自定义"开始"时间的定时任务event
drop event if exists evt_test;
create event evt_test
on schedule every 10 SECOND -- 每10秒执行一次(second可以换成day之类的)
/* 任务的开始时间(或说MySQL系统认定的本任务开始的时间,哪怕其实那时候还没这个任务),如果开始的时间是 now() 则会立刻do一次(类似do-while),starts可暂时理解为start at */
starts CURDATE() do /*(注意这个时间可以是当前时间点之前的时间,且对于此任务而言,如果创建此任务后的"当前时间"的秒部分(如12.13.34)不是10的正数倍(之所以要10的整数倍是因为starts CURDATE()的时间点的秒部分是0),则会等到10的整数倍的那一秒(即12.13.40)立刻do一次)*/
insert into student(Name, ClassName) values('ss','bb');
show events; -- 显示有哪些任务及它们的参数
alter EVENT evt_test disable; -- 修改该任务为未启动
/* MySQL的event中的do是可以执行多条语句的,即用begin end,但是这里必须有delimiter,否则不通过,具体写法如下:*/
delimiter $$ -- 对于event而言若要do多条语句必须有这个(是不是类似SQLServer的go; ?) drop event if exists evt_test; create event evt_test on schedule every 10 SECOND starts CURDATE() do begin insert into student(Name, ClassName) values('ss','bb'); insert into student(Name, ClassName) values('Uk','mmm'); update student set `Name`='234m' where Name='A六'; end $$ -- $$是开头 delimiter $$ 定义的分隔符,也可以定义为别的字符/字符串,这里必须在end后加上这个分隔符(end和$$直接要有空白符)
posted on 2017-01-10 11:29 Silentdoer 阅读(4000) 评论(0) 编辑 收藏 举报