Silentdoer

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

统计

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

 

作者:Silentdoer
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果随笔/文章及代码有表述不当之处,还请不吝赐教。

posted on   Silentdoer  阅读(4010)  评论(0编辑  收藏  举报

编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示