MySQL新学知识三MySQL 事件EVENT前言一、创建事件二、启用事件三、一个示例前言‍‍记录学习成果以便温故而知新在Navicat上看到事件EVENT已经是很久以前了但是使用事件还是最近的事现在把一些学习所得记录一下。所谓事件其实就事MySQL的定时任务。一、创建事件MySQL文档创建事件https://dev.mysql.com/doc/refman/8.4/en/create-event.html语法如下CREATE[DEFINER user]EVENT[IF NOT EXISTS]event_nameON SCHEDULE schedule[ON COMPLETION [NOT] PRESERVE][ENABLE | DISABLE | DISABLE ON {REPLICA | SLAVE}][COMMENT ‘string’]DO event_body;schedule: {AT timestamp [ INTERVAL interval] …| EVERY interval[STARTS timestamp [ INTERVAL interval] …][ENDS timestamp [ INTERVAL interval] …]}interval:quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}语法看起来有点抽象图形界面看起来比较直观一点。下图是Navicat创建事件的定义页图中红字是语法中对应的。其中的event_body即事件体也就是定时任务执行的内容需要注意如果有多条语句需要执行用BEGIN与END关键字括起来。下图在Navicat中是计划页对应语法中的“ON SCHEDULE”而schedule及计划有份AT与EVERY两种模式即单次执行与循环执行语法中的COMMENT对应的是注释页文档中说注释64字符二、启用事件事件默认是不启用的执行如下语句启用事件SETGLOBALevent_schedulerON;启用后执行SHOWPROCESSLIST;如下图出现User为event_scheduler的行说明启用成功。执行如下语句停用事件SETGLOBALevent_schedulerOFF;执行后User为event_scheduler的行消失。三、一个示例CREATEDEFINERrootlocalhostEVENTEVENT_TESTONSCHEDULE EVERY2MINUTESTARTS2026-10-18 15:13:50ONCOMPLETIONNOTPRESERVEENABLEDOBEGINDECLAREvINTEGER;DECLARECONTINUEHANDLERFORSQLEXCEPTIONBEGINEND;SETv0;WHILEv5DOINSERTINTOt1(num)VALUES(0);UPDATEt2SETs1s11;SETvv1;ENDWHILE;ENDNavicat对比执行一次后效果表t1表t2执行第二次后结果表t1表t2看起来是实现预期。MySQL的事件即定时任务还是有一定的便利性的。