MySQL中EVENT的用法
一、Event创建语法
1 2 3 4 5 6 | CREATE Event [IF NOT EXISTS] event_name -- 创建使用create event ON SCHEDULE schedule -- on schedule 什么时候来执行,执行频率 [ ON COMPLETION [ NOT ] PRESERVE] -- 调度计划执行完成后是否还保留 [ENABLE | DISABLE] -- 是否开启事件,默认开启 [COMMENT 'comment' ] -- 事件的注释 DO event_body; -- 这个调度计划要做什么? |
[IF NOT EXISTS]如果新建的event_name系统里不存在,则创建一个新的,如果已经存在了,则提示已经存在。如果省略的话,系统里不存在新的event_name则创建成功,如果已经存在了,会保存。
[ON COMPLETION [NOT] PRESERVE 如果带了not当事件执行完后,就自动删除,不保留事件。如果不加not事件执行完会保留下来,该项不写的时候,默认是执行完事件保留下来。
[ENABLE | DISABLE]ENABLE时事件开启,当到了事件执行时间,系统会自动执行event_body里定义的语句,如果设置的是DiSABLE则事件关闭,到了执行时间,事件也不会执行。该项没有设置时,默认为事件开启。
[COMMENT 'comment']comment是事件注释,对事件进行解释说明。
event_body事件主体,可以是单条DML语句,可以是多条DML语句,多条时需要写在begin……end之间,也可调用存储过程。
二、执行时间说明
1、单次计划:
-
在2022年2月1日4点执行一次
-
on schedule at '2022-02-01 04:00:00’
2、重复计划
-
on schedule every 1 second 每秒执行一次
-
on schedule every 1 minute 每分钟执行一次
-
也可以是hour、day、week、month、year
3、指定开始时间的重复计划
-
每天在20:00:00执行一次
-
on schedule every 1 day starts ‘2022-6-16 20:00:00'
三、如何查看Event
1 2 3 4 5 6 7 8 9 | 查看有哪些event Show events; 或者通过 Select * from information_schema.events; 查看event具体内容 SHOW CREATE EVENT event_name1; 删除event DROP EVENT event_name; 修改event 可以先删除,再重新创建 也可以 ALTER EVENT event_name …… 省略号后边的内容和创建event一样 |
四、实例
1 2 3 4 5 6 7 8 9 10 11 12 13 | create table stu_bak select * from student; 接着,我们创建存储过程student_bak_pro,用来备份student表中的最新数据 CREATE DEFINER=`root`@`localhost` PROCEDURE `stu_bak_pro`() BEGIN insert into stu_bak select * from student t where not EXISTS ( select * from stu_bak t1 where t1.sno=t.sno); COMMIT ; END 然后,我们再创建event,让系统每3秒自动执行以下存储过程stu_bak_pro CREATE Event stu_bak_event ON SCHEDULE every 3 second ON COMPLETION PRESERVE DO call stu_bak_pro(); |
创建事件,每5秒钟定时删除student表中过期2分钟的数据:
1 2 3 4 | create event del_stu on schedule every 5 second on completion preserve do delete from stu where timestamp < ( current_timestamp () + interval -2 minute ); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人