我最近做项目遇到一个问题就是数据库的的订单需要定时检查自己的订单状态,如果到了endtime字段的时间订单状态还是2,就将订单状态修改为4

在网上找到类似的解决方法。

定时的关键是要结合mysql的某些时间函数。

如下文:

mysql可以实现定时触发功能,比如说定于某某时间mysql数据库做什么工作,或每隔多长时间做什么工作。

第二种情况应用还是比较广的,比如说我希望每天检查一下我的数据信息,超过一个月的无用信息清除以腾出空间供其他存储数据使用;或者相隔一段时间更新一下数据等等。

下面讨论下这种情况,给出一个例子供大家参考:

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

DELIMITER |

DROP PROCEDURE IF EXISTS e_test |
CREATE PROCEDURE e_test()

BEGIN
      update order set status=1 where to_days(now())-TO_DAYS(date)>=1and status=0;

END

|

假设有一个order表,并且表里有一个status字段和一个date字段,现在将date中的时间距现在时间超过1天的并且状态status=0的这条数据的状态status改成1。

2.创建定时器取名为event_test

SET GLOBAL event_scheduler = 1; 
CREATE EVENT IF NOT EXISTS event_test

ON SCHEDULE EVERY 1 SECOND

ON COMPLETION PRESERVE

DO CALL e_test();

创建一个定时器,每间隔1秒触发一次事件,即每个一秒执行一次上面定义的e_test这个存储过程。

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

ALTER EVENT event_test ON

COMPLETION PRESERVE ENABLE;

最后提醒一点,创建存储过程与创建定时器代码要分开执行,否则会报错,暂时还不知道为什么,个人以为这个可能是数据库创建好存储过程需要一定的缓冲时间来做好准备,我们要认为的给他留出这个时间。当然这个时间对数据库来说是一定的时间,但是对于我们来说仅仅是眨眼之间的功夫,只要分开两次执行时间就足够了。

个人的一点体会,希望对大家有帮助。

个别环境哟经常检查show variables like '%event_scheduler%';,确保此数据库权限已开就ok了

开启event_scheduler sql指令:
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
相反,关闭event_scheduler指令:

SET GLOBAL event_scheduler = OFF;
SET @@global.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@global.event_scheduler = 0;

Mysql event时间触发器,实现定时修改某些符合某一条件的某一字段的更多相关文章

  1. mysql 函数 时间函数,数学函数,字符串函数,条件判断函数

    =========================================== mysql 相关函数 ============================================= ...

  2. 【docker】centOS7上部署的mysql和spring boot服务,要求,mysql的时间、java程序服务的时间和宿主机的时间完全保持一致【修改mysql时区,临时和永久】【修改spring boot配置文件时区】【修改docker启动spring boot实例程序时区】

    要求:centOS7上部署的mysql和spring boot服务,要求,mysql的时间.java程序服务的时间和宿主机的时间完全保持一致: ============================ ...

  3. 修改mysql的时间/时区

    # 背景 往db中insert数据发现时间不对,因为是新DB,所以猜测是mysql设置不对 # 解决方法 方法一:通过mysql命令行模式下动态修改 show variables like " ...

  4. Mysql event学习

    我们可能比较熟悉crond,但是mysql也有一个自己的叫event,oracle的叫job. 开启mysql的event有很多种方法,和临时开启.我们在配置文件里面添加参数,随着服务一起开启. 在[ ...

  5. mysql日期时间函数2

    win7可以设定每周从哪一天开始,win2003等不能方便的修改.有的是周日开始,有的是周一开始.而工作中有的时候每周是从周六开始算的,有些数据需要按周统计,那么那种方式比较好呢?   通过下面的研究 ...

  6. mysql存储过程和触发器的应用

    ***********[mysql 存储过程和触发器 -- 别安驹]********************* 1.什么情况下使用存储过程? 完成一些比较麻烦的逻辑,比如多表在mysql端的cpu很空 ...

  7. mysql查看所有触发器以及存储过程等操作集合

    今天在做每个月定时扣费的功能 用到了Mysql的Event Scheduler 昨完之后发现一个问题 Event Scheduler 默认是不开启的 要在mysql内执行SET GLOBAL even ...

  8. MySql学习笔记——触发器

    今天又学习了一下mysql触发器的相关知识,对此做了一些笔记和总结. 定义及作用 触发器是一个被指定关联到一个表的数据对象,触发器不需要调用,当对一个表的特别事件出现时,它就会被激活.触发器的代码也是 ...

  9. mysql数据库从删库到跑路之mysql:视图、触发器、事务、存储过程、函数

    mysql:视图.触发器.事务.存储过程.函数 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果 ...

随机推荐

  1. 反射机制(1)认识Class类

    认识Class类: 正常情况下,必须指定类的完整路径才能实例化对象,但是java中也允许通过一个对象找到其所在类的信息.这实际就是class类的功能. package 类集; class X{ }; ...

  2. Git-Git Book阅读笔记

    git diff [fname]    查看工作区与缓存区异同 git diff --staged [fname]    查看缓存区与上次提交之间的差异 git diff HEAD [fname] 查 ...

  3. jquery mobile 的loading提示“正在加载...”在不同版本中的不同实现方式

    在jquery mobile开发中,在页面的切换.或者ajax获取数据时由于网速慢等其他原因,会有一个加载的时间,如果能在这段时间给一个“正在加载...”的提示,用户体验会更好.下面来简单的介绍一下在 ...

  4. Python: 去掉字符串中的非数字(或非字母)字符

    >>> crazystring = ‘dade142.;!0142f[.,]ad’ 只保留数字>>> filter(str.isdigit, crazystring ...

  5. Caused by: java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/

    Caused by: Java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ ...

  6. STL容器分析--stack

    stack,顾名思义,表示栈,先进后出.

  7. docker运行环境安装-后续步骤(二)

    1.以非 root 用户身份管理 Docker [origalom@origalom ~]$ sudo groupadd docker # 创建docker用户组[origalom@origalom ...

  8. Lintcode---实现 Trie

    实现一个 Trie,包含 insert, search, 和 startsWith 这三个方法. 注意事项 你可以假设所有的输入都是小写字母a-z. 您在真实的面试中是否遇到过这个题? Yes 样例 ...

  9. C 语言文件拷贝

    相关的方法: int fputs(const char*s,FILE *stream); int gets(char *s,int size,FILE *stream); 具体代码如下 /** *@a ...

  10. 点滴积累【JS】---JS小功能(JS实现模仿微博发布效果)

    效果: 思路: 利用多功能浮动运动框架实现微博效果,首先,将textarea中的属性添加到新创建的li里面然后,再将li添加到ul里面,再利用浮动运动框架将数据动态的显示出来. 代码: <hea ...