在我们操作数据库过程中,通常会遇到一些某个时间点操作数据库的问题,例如:

(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实现数据每日定期操作相关推荐

  1. [数据库] Navicat for MySQL事件Event实现数据每日定期操作

    在我们操作数据库过程中,通常会遇到一些某个时间点操作数据库的问题,例如:         (1).每天凌晨12点对数据库进行定时备份,结算和汇总:         (2).每天凌晨2点删除数据库前三天 ...

  2. navicat for mysql 事件_Navicat for MySQL事件Event实现数据每日定期操作

    在我们操作数据库过程中,通常会遇到一些某个时间点操作数据库的问题,例如: (1).每天凌晨12点对数据库进行定时备份,结算和汇总: (2).每天凌晨2点删除数据库前三天的数据: (3).插入某个数据超 ...

  3. mysql 多线程_数据库选型之MySQL(多线程并发)

    本博客记录作者在工作与研究中所经历的点滴,一方面给自己的工作与生活留下印记,另一方面若是能对大家有所帮助,则幸甚至哉矣! 简介 鉴于高频中心库task部分占用机器较多,为节省成本,调研数据库或缓存.在 ...

  4. es mysql 预处理_数据库选型之MySQL vs ElasticSearch

    前言 应用系统通常需要借助数据预处理(如物化视图等)来实现数据查询加速的需求.目前业界主流数据库主要有以下两大类,一种是基于传统RDBMS关系型数据库来实现:另一种是基于NoSQL非关系型数据库来实现 ...

  5. linux如何mysql实现导出数据库,Linux下MySQL导入导出数据库

    linux下 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sq ...

  6. navicat无法连接远程mysql数据库_[数据库]Navicat Premium 解决无法连接远程mysql数据库问题...

    [数据库]Navicat Premium 解决无法连接远程mysql数据库问题 0 2018-07-18 00:00:15 问题原因 :  第一点 远程服务器数据库没有授权 第二点 远程连接数据库的端 ...

  7. navicat for mysql服务_使用Navicat for MySQL数据库连接服务器中的MySQL服务

    本文主要向大家介绍了使用Navicat for MySQL数据库连接服务器中的MySQL服务,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 第一步:登录mysql服务器,新建一个 ...

  8. navicat mysql 日志_使用Navicat查看MySQL日志的具体方法

    使用Navicat查看MySQL日志的具体方法 发布时间:2020-05-18 14:04:52 来源:51CTO 阅读:699 作者:三月 下文主要给大家带来使用Navicat查看MySQL日志的具 ...

  9. navicat mysql 字符集_关于Navicat和MYSQL字符集不统一出现的中文乱码问题

    最近遇到一串关于MySQL中文乱码的问题,问题背景是这样的: 在此之前,服务器上安装好mysql之后就立马重新配置了字符集为utf8,之后用Navicat进行数据导入,发现中文的字符导入之后全是乱码, ...

最新文章

  1. Android 国际化问题
  2. C语言经典程序之:求十个整数中的最大最小数并输出(指针)
  3. Java写手机专题分析接口_jeesite学习文档API-内容管理模块
  4. “正尝试安装的adobe flash player不是最新版本”的解决方法:
  5. 本地---tcpserver与tcpclient
  6. CKEditor的使用-编辑文本
  7. linux怎么将终端一分为二,Linux下的终端和作业控制
  8. vscode 使用技巧(持续更新)
  9. JavaScript 火的有点过头了,但又能火多久呢?
  10. 读[SBO高层大变动]一文有感
  11. 2021美亚团队赛复盘
  12. 计算机打开显示服务器无法运行,电脑中打开WMP播放器提示服务器运行失败如何解决...
  13. windows命令行将应用程序加入环境变量
  14. Word 使用宏根据文件名实现文件版本号自动更新_rev00
  15. Netfilx Eureka
  16. 储能双向变流器(PCS)设备中的电流检测方法
  17. trainging contest#2(2011成都现场赛)G BY bly
  18. 票面利率,收益率和到期收益率
  19. python批量修改图片格式和名称
  20. 开源移动护理_开源让您的健康护理倍感美好

热门文章

  1. [Centos8]安装Left4Dead服务器及各类问题
  2. 基于jsp的记账管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+部署视频)
  3. c语言中的beep函数,c++ Beep函数
  4. 【论文】【BLADE-FL 】When Federated Learning Meets Blockchain: A New Distributed Learning Paradig
  5. java 如何连接oracle_oracle教程之java连接oracle_java如何连接oracle数据库?
  6. 【打卡第241道】【动态规划DP01背包】【leetCode高频】:1049. 最后一块石头的重量 II
  7. 金融数据获取:获取上市公司财务报表
  8. 100集华为HCIE安全培训视频教材整理 | 双机热备(六)
  9. ZBar简介及安装配置流程 | 2021SC@SDUSC
  10. Table边框(内边框,外边框)使用总结