[数据库] Navicat for MySQL事件Event实现数据每日定期操作丨【绽放吧!数据库】
这是2014年作者早期分享的博客,希望对华为云的读者有帮助。在我们操作数据库过程中,通常会遇到一些某个时间点操作数据库的问题,例如:
(1).每天凌晨12点对数据库进行定时备份,结算和汇总;
(2).每天凌晨2点删除数据库前三天的数据;
(3).插入某个数据超过一定时间改变某个值的状态,比如预警系统。
这里就需要通过Event事件进行简单操作,下面将详细处理。你可能会想到通过触发器实现,但是如果是同一张表Insert插入数据后,但是触发器再进行Update更新操作是不行的,所以需要尝试通过Event事件解决。希望这篇文章对你有所帮助,如果文章中出现错误或不足之处,还请海涵~
一. Event实现每日某个时刻删除事件
首先通过Navicat for MySQL查看Event事件是否开启,具体代码:
如果没有开启,需要数据库超级权限设置。
假设现在存在一张表loginuser,包括用户名、密码、权限三个字段。如下图:
当前时间点为2017年3月9日 23:48,我们设置23:50执行删除eastmount数据操作。其中SQL语句的Event代码如下:
创建事件可以查看到的,如下图所示:
然后过了23:50执行查询语句就会发现eastmount用户已经被删除。
参考官网:https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html
二. Event实现每隔某段时间定时插入事件
在使用事件Event中,需要开启和关闭事件,使用的代码如下:
关闭事件:ALTER EVENT testevent DISABLE;
开启事件:ALTER EVENT testevent ENABLE;
查看事件是否开启的代码如下:
输出如下图所示:
运行结果如下图所示:
注意:在真实的开发过程中,会遇到mysql服务重启或断电等情况,此时则会出现时间调度器被关闭的情况,所有事件都不起作用,解决方法,需要在mysql.ini文件中加入 "event_scheduler = ON;" 语句。
三. Event实现超过某个时间更新状态
假设现在有一个报警系统,当用户进入房间开始计时,当用户在放在中待了2小时就开始报警,设置状态。数据如下:
SQL语句查询返回结果如下:
输出结果如下图所示,每隔10秒会插入一个数据,所以不断更新。
现在的更新UPDATE的语句如下所示:
然后查询实时更新状态的SQL语句如下:
输出如下图所示,发现302可能是查过300秒,可能实时更新的延误,但不影响效果的。
讲到这里,一个简单预警系统的数据库就设置完成,总共我们设置了3个事件,如下图所示:
补充一段代码:
- 点赞
- 收藏
- 关注作者
评论(0)