navicat for mysql 事件_[数据库] Navicat for MySQL事件Event实现数据每日定期操作
在我们操作数据库过程中,通常会遇到一些某个时间点操作数据库的问题,例如:
(1).每天凌晨12点对数据库进行定时备份,结算和汇总;
(2).每天凌晨2点删除数据库前三天的数据;
(3).插入某个数据超过一定时间改变某个值的状态,比如预警系统。
这里就需要通过Event事件进行简单操作,下面将详细处理。你可能会想到通过触发器实现,但是如果是同一张表Insert插入数据后,但是触发器再进行Update更新操作是不行的,所以需要尝试通过Event事件解决。希望这篇文章对你有所帮助,如果文章中出现错误或不足之处,还请海涵~
一. Event实现每日某个时刻删除事件
首先通过Navicat for MySQL查看Event事件是否开启,具体代码:show variables like ‘%sche%‘;通常事件是开启的,如下图所示:
如果没有开启,需要数据库超级权限设置。set global event_scheduler =1;
其中event_scheduler为ON表示开启,OFF表示关闭,如下:
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+下面开始写事件进行操作。
假设现在存在一张表loginuser,包括用户名、密码、权限三个字段。如下图:
当前时间点为2017年3月9日 23:48,我们设置23:50执行删除eastmount数据操作。其中SQL语句的Event代码如下:CREATE EVENT testevent
ON SCHEDULE EVERY 1 DAY STARTS ‘2017-03-09 23:50:00‘
DO
delete from loginuser where Username=‘eastmount‘;创建事件可以查看到的,如下图所示:
然后过了23:50执行查询语句就会发现eastmount用户已经被删除。
点开事件如下图所示,但我更推荐大家写SQL语句。
通过上面这段SQL语句,我们知道了最简单的Event事件,下面进一步加深介绍。备份数据加个备份SQL语句执行即可。
参考官网:https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html
二. Event实现每隔某段时间定时插入事件
在使用事件Event中,需要开启和关闭事件,使用的代码如下:
关闭事件:ALTER EVENT testevent DISABLE;
开启事件:ALTER EVENT testevent ENABLE;
查看事件是否开启的代码如下:SELECT * FROM mysql.event;输出如下图所示:
下面定义每隔10秒插入一行数据的事件,比如实时接收交通数据信息等实时处理,通常会使用该方法进行插入操作。创建一个表logininfo,记录登录信息,字段包括:ID序号(主键、递增INT型)、NAME用户名、STARTTIME(登录时间)、ENDTIME(登出时间)、STATE(状态 0-离线 1-在线)。
SQL语句创建EVENT事件如下:CREATE EVENT insertevent
ON SCHEDULE EVERY 10 SECOND
DO
INSERT INTO logininfo(NAME,STARTTIME,STATE) values(‘test01‘,now(),‘1‘);运行结果如下图所示:
从图中可以看到,每隔10秒就插入一组数据,该事件正确执行。
注意:在真实的开发过程中,会遇到mysql服务重启或断电等情况,此时则会出现时间调度器被关闭的情况,所有事件都不起作用,解决方法,需要在mysql.ini文件中加入 "event_scheduler = ON;" 语句。
三. Event实现超过某个时间更新状态
假设现在有一个报警系统,当用户进入房间开始计时,当用户在放在中待了2小时就开始报警,设置状态。数据如下:
SQL语句查询返回结果如下:
select current_timestamp, starttime, timestampdiff(SECOND,starttime,current_timestamp) as T from logininfo;输出结果如下图所示,每隔10秒会插入一个数据,所以不断更新。
现在的更新UPDATE的语句如下所示:CREATE EVENT updateevent
ON SCHEDULE EVERY 10 SECOND
DO
update logininfo set STATE=0 WHERE
timestampdiff(SECOND,starttime,current_timestamp)>300 and STATE=1;然后查询实时更新状态的SQL语句如下:
select ID, STATE, current_timestamp, starttime,
timestampdiff(SECOND,starttime,current_timestamp) as T
from logininfo;输出如下图所示,发现302可能是查过300秒,可能实时更新的延误,但不影响效果的。
讲到这里,一个简单预警系统的数据库就设置完成,总共我们设置了3个事件,如下图所示:
补充一段代码:delimiter //
CREATE EVENT e
ON SCHEDULE
EVERY 5 SECOND
DO
BEGIN
DECLARE v INTEGER;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
SET v = 0;
WHILE v < 5 DO
INSERT INTO t1 VALUES (0);
UPDATE t2 SET s1 = s1 + 1;
SET v = v + 1;
END WHILE;
END //
delimiter ;最后希望文字对您有所帮助,基础性文章,如果存在错误或不足之处,还请海涵~
最近自己和她太操劳,自己需要多付出点,多学点,多为她做点,forever。
(By:Eastmount 2017-03-10 中午12点)
navicat for mysql 事件_[数据库] Navicat for MySQL事件Event实现数据每日定期操作相关推荐
- [数据库] Navicat for MySQL事件Event实现数据每日定期操作
在我们操作数据库过程中,通常会遇到一些某个时间点操作数据库的问题,例如: (1).每天凌晨12点对数据库进行定时备份,结算和汇总: (2).每天凌晨2点删除数据库前三天 ...
- navicat for mysql 事件_Navicat for MySQL事件Event实现数据每日定期操作
在我们操作数据库过程中,通常会遇到一些某个时间点操作数据库的问题,例如: (1).每天凌晨12点对数据库进行定时备份,结算和汇总: (2).每天凌晨2点删除数据库前三天的数据: (3).插入某个数据超 ...
- mysql 多线程_数据库选型之MySQL(多线程并发)
本博客记录作者在工作与研究中所经历的点滴,一方面给自己的工作与生活留下印记,另一方面若是能对大家有所帮助,则幸甚至哉矣! 简介 鉴于高频中心库task部分占用机器较多,为节省成本,调研数据库或缓存.在 ...
- es mysql 预处理_数据库选型之MySQL vs ElasticSearch
前言 应用系统通常需要借助数据预处理(如物化视图等)来实现数据查询加速的需求.目前业界主流数据库主要有以下两大类,一种是基于传统RDBMS关系型数据库来实现:另一种是基于NoSQL非关系型数据库来实现 ...
- linux如何mysql实现导出数据库,Linux下MySQL导入导出数据库
linux下 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sq ...
- navicat无法连接远程mysql数据库_[数据库]Navicat Premium 解决无法连接远程mysql数据库问题...
[数据库]Navicat Premium 解决无法连接远程mysql数据库问题 0 2018-07-18 00:00:15 问题原因 : 第一点 远程服务器数据库没有授权 第二点 远程连接数据库的端 ...
- navicat for mysql服务_使用Navicat for MySQL数据库连接服务器中的MySQL服务
本文主要向大家介绍了使用Navicat for MySQL数据库连接服务器中的MySQL服务,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 第一步:登录mysql服务器,新建一个 ...
- navicat mysql 日志_使用Navicat查看MySQL日志的具体方法
使用Navicat查看MySQL日志的具体方法 发布时间:2020-05-18 14:04:52 来源:51CTO 阅读:699 作者:三月 下文主要给大家带来使用Navicat查看MySQL日志的具 ...
- navicat mysql 字符集_关于Navicat和MYSQL字符集不统一出现的中文乱码问题
最近遇到一串关于MySQL中文乱码的问题,问题背景是这样的: 在此之前,服务器上安装好mysql之后就立马重新配置了字符集为utf8,之后用Navicat进行数据导入,发现中文的字符导入之后全是乱码, ...
最新文章
- Android 国际化问题
- C语言经典程序之:求十个整数中的最大最小数并输出(指针)
- Java写手机专题分析接口_jeesite学习文档API-内容管理模块
- “正尝试安装的adobe flash player不是最新版本”的解决方法:
- 本地---tcpserver与tcpclient
- CKEditor的使用-编辑文本
- linux怎么将终端一分为二,Linux下的终端和作业控制
- vscode 使用技巧(持续更新)
- JavaScript 火的有点过头了,但又能火多久呢?
- 读[SBO高层大变动]一文有感
- 2021美亚团队赛复盘
- 计算机打开显示服务器无法运行,电脑中打开WMP播放器提示服务器运行失败如何解决...
- windows命令行将应用程序加入环境变量
- Word 使用宏根据文件名实现文件版本号自动更新_rev00
- Netfilx Eureka
- 储能双向变流器(PCS)设备中的电流检测方法
- trainging contest#2(2011成都现场赛)G BY bly
- 票面利率,收益率和到期收益率
- python批量修改图片格式和名称
- 开源移动护理_开源让您的健康护理倍感美好
热门文章
- [Centos8]安装Left4Dead服务器及各类问题
- 基于jsp的记账管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+部署视频)
- c语言中的beep函数,c++ Beep函数
- 【论文】【BLADE-FL 】When Federated Learning Meets Blockchain: A New Distributed Learning Paradig
- java 如何连接oracle_oracle教程之java连接oracle_java如何连接oracle数据库?
- 【打卡第241道】【动态规划DP01背包】【leetCode高频】:1049. 最后一块石头的重量 II
- 金融数据获取:获取上市公司财务报表
- 100集华为HCIE安全培训视频教材整理 | 双机热备(六)
- ZBar简介及安装配置流程 | 2021SC@SDUSC
- Table边框(内边框,外边框)使用总结