在《如何理解MySQL中的Event事件?》一文中,我们已经了解了 MySQL Event 事件的基本概念。那么,MySQL 事件到底该如何创建,以及怎样让它自动执行呢?
在 MySQL 数据库中,可以通过CREATE EVENT语句来创建事件:(补充说明:'[]'表示该部分为可选项)
CREATE
[DEFINER = { user | CURRENT_USER }] -- 定义事件执行的用户(可选)
EVENT [IF NOT EXISTS] event_name -- 事件名称,IF NOT EXISTS避免重复创建
ON SCHEDULE schedule -- 核心且必选:设定执行时间/周期
[ON COMPLETION [NOT] PRESERVE] -- 任务完成后是否保留事件(默认不保留)
[ENABLE | DISABLE | DISABLE ON SLA VE] -- 事件状态(启用/禁用,默认启用)
[COMMENT 'string'] -- 事件描述(可选)
DO sql_statement; -- 要执行的SQL语句/语句块具体该怎么使用呢?先记住一个关键点:ON SCHEDULE 这个参数一定不能省略。它是创建 MySQL 定时任务时最核心的部分。假如任务只需要在某个固定时间执行一次,比如在 2025-09-17 12:12:00 触发一次,那么写法就是 ON SCHEDULE AT TIMESTAMP '2025-09-17 12:12:00';如果需要按周期循环执行,例如每分钟自动执行一次,那么就写 ON SCHEDULE EVERY 1 MINUTE 。
接下来结合一个实际示例来看,就更容易理解了;
先看一下当前 dotcpp_user 表中一共有多少个用户数据:

如果我们希望每 10 秒向 dotcpp_user 表中自动插入一条记录('dotcpp_Suser','go coding!'),那么可以执行下面这条 MySQL Event 创建语句:
CREATE EVENT insert_user
ON SCHEDULE EVERY 10 SECOND
DO
INSERT INTO dotcpp_user (name, hobby)
VALUES ('dotcpp_Suser', 'go coding!');等待一分钟后,再查看一下后面是否新增了 10 个用户:
LATER~

最后别忘了及时删除这个事件:
DROP EVENT insert_user; -- 不然要爆了!!!
