MySQL创建一个固定频率执行且自定义"开始"时间的定时任务event

时间:2022-06-14 06:26:16

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 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和$$直接要有空白符)