在Mysql数据库中怎么对数据表定时清空

  介绍

这期内容当中小编将会给大家带来有关在Mysql数据库中怎么对数据表定时清空,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

要达到如下目的:

Mysql数据库会每隔一段时间(可以是2小时,也可以是一天,这个可以自定义),定时对一张库中的表做一个判断,如果这张表的数据超过了20条(这个数据也是自定义的,也可以是200条),就保留最新的10条数据(这个数据同样可以自定义,但要小于等于之前的超过数据条数)。

简单说一下解决的思路(从后往前推导):

1,开启一个定时器,这个定时器做了两件事:

⑴设置了时间间隔

⑵调用一个存储过程

2,写一个存储过程,此存储过程要做两件事:

⑴判断表的数据条数是否超过20,如果超过20才做下面的步骤。

⑵要保留最新的10条数据,删除其它的老数据。这个就需要表必须有一个递增的主键id,这样的话最新的数据id的值也就越大。只要找出当前表最大的id然后减10得到一个& # 39;删除节点& # 39;,再在删除语句中的写在身份证& lt; & # 39;删除节点& # 39;即可。这样虽然结果不一定准确,但可以大致实现效果。

假设现在有一个数据表,这张表中有一个主键id是递增的。这张表的数据会不断增加,现在要每隔5秒钟保留数据表的最新10条数据,其它的都删掉。

代码过程如下:

1。首先定义一个存储过程取名为pro_clear_data,注意竖线(“|”)一定不能丢

DELIMITER  |   ,DROP  PROCEDURE  IF  EXISTS  pro_clear_data  |   ,CREATE  PROCEDURE  pro_clear_data ()   BEGIN 才能;   ,,   ,,SET  @datas_count=(SELECTCOUNT (id),得到数据);   ,,如果(@datas_count> 20),那么   ,,   ,,SET  @max_id=(SELECT 马克斯(id),得到数据),,,   ,SET  @max_id =, @max_id 作用;10;   ,,,DELETE 得到‘数据’,WHERE  id<@max_id;,,,   最终获得才能IF ;   ,,   ,结束   以前,|

2。创建定时器取名为event_time_clear_data

SET  GLOBAL  event_scheduler =, 1,,   ,CREATE  EVENT  IF  NOT  EXISTS  event_time_clear_data   ,   ,提醒SCHEDULE  EVERY  5,第二   ,   ,提醒COMPLETION  PRESERVE    ,   DO  CALL  pro_clear_data ();

3。这个是最简单但是也是最重要的,我们要手动的启动这个定时器,要不然是没法工作的。

ALTER  EVENT  event_time_clear_data 提醒;   ,   COMPLETION  PRESERVE 使

创建存储过程与创建定时器代码要分开执行

每隔5秒钟就会自动清空一次数据,保留最新的10条。

另外,关闭定时器的代码是:

ALTER  EVENT  event_time_clear_data 提醒;   ,   ,COMPLETION  PRESERVE 禁用;

删除存储过程的代码是:

DROP  PROCEDURE  pro_clear_data;

关于事件:

mysql5.1版本开始引进事件概念.event既“时间触发器”,与触发器的事件触发不同,事件类似与linux crontab计划任务,用于时间触发。通过单独或调用存储过程使用,在某一特定的时间,点触发相关的sql语句或存储过程。

删除事件:

DROP  EVENT  IF  EXISTS  event_time_clear_data1

上述就是小编为大家分享的在Mysql数据库中怎么对数据表定时清空了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

在Mysql数据库中怎么对数据表定时清空