在《从实例出发教会你如何创建并执行事件!》中我们已经学会了创建事件,那么如何对事件进行删改呢?其实,我们之前已经提到了删除事件的一点知识,使用DROP EVENT来进行事件删除。这一小节,我将详细向大家删改事件的详细步骤:
怎么删?
首先你得有个事件吧,我们有个dotcpp_user表:
创建一个事件insert_user,为dotcpp_user表每10秒插入一名用户('Suser','do coding!'):
CREATE EVENT insert_user ON SCHEDULE EVERY 10 SECOND DO INSERT INTO dotcpp_user (name, hobby) VALUES ('Suser', 'do coding!');
一段时间过后,发现用户大增:
好了,没必要这么多,可以停止事件insert_user;
删除事件的语法是:
DROP EVENT 你的事件名;
现在我们就把这个插入事件删除掉:
DROP EVENT insert_user;
插入事件删除后,dotcpp_user表就没有再增加用户了,成功学会删除语法。
怎么改?
我们可以通过ALTER EVENT进行事件修改:
先准备个事件吧,select_user事件每10s对dotcpp_user进行一次查询:
USE dotcpp; CREATE EVENT select_user ON SCHEDULE EVERY 10 SECOND DO SELECT * FROM dotcpp_user;
修改时间的语法如下:
ALTER EVENT [IF EXISTS] event_name -- 修改哪个事件 [ON SCHEDULE schedule] -- 定义事件执行时间和频率 [ON COMPLETION [NOT] PRESERVE] -- 事件执行后是否保留 [RENAME TO new_event_name] -- 是否需要重命名 [ENABLE | DISABLE | DISABLE ON SLAVE] -- 是否禁用 [COMMENT 'comment'] -- 为事件添加注释 [DO event_body] -- 执行内容
那就简单修改这个事件,如果需要每20s进行一次查询,那我们就这样修改
ALTER EVENT select_user ON SCHEDULE EVERY 20 SECOND ON COMPLETION NOT PRESERVE -- 这里重复一次就给关了,懒得drop了 COMMENT '修改完直接给关了' DO SELECT * FROM dotcpp_user;
进行事件查看:
SHOW CREATE EVENT select_user \G
由于客户端字符集和服务端字符集不匹配导致出现乱码问题,我后面会全局配置好 utf8mb4的,不知道怎么配置可以看看《如何对默认字符集和校对规则进行修改?》。
修改后select_user事件解释:这是一个名为"select_user"的MySQL定时事件,由root用户在本机创建。该事件被配置为每20秒执行一次,由于使用了"NOT PRESERVE"属性,所以执行一次就会自动删除,具体内容是查询dotcpp_user数据表的所有记录。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程