一、Event创建语法
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
查看有哪些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一样
四、实例
创建一个表stu_bak,用此表来备份student表的数据;
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分钟的数据:
create event del_stu on schedule every 5 second on completion preserve do delete from stu where timestamp< (current_timestamp() + interval -2 minute);
标签:bak,schedule,MySQL,用法,stu,事件,EVENT,执行,event From: https://www.cnblogs.com/conpi/p/16748322.html