MySQL中的触发器

在做项目的过程中,需要用到定时任务做。查看了各种资料,做了个简单的总结。希望自己再遇到的时候有一个参考。
mysql5.1之后又了定时任务

1、查看事件支持是否开启,使用如下命令查看:

SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
SHOW PROCESSLIST;
以上这三种都可以看见你的MySQL是否开启。

2、 开启定时器 0/off , 1/on

SET GLOBAL event_scheduler = 1;
– 通过动态参数修改
SET GLOBAL event_scheduler = ON;

将event_scheduler=ON写入my.cnf,一般在/etc/my.cnf下面加入这一行,避免数据库重启之后事件失效。

3、做一个定时任务代码实现部分 ,修改状态为1的订单将use改为2表示已经失效,并且将store和buy修改

创建定时器,调用修改过程
DELIMITER $$
DROP PROCEDURE IF EXISTS mgj_orders_test $$
CREATE PROCEDURE mgj_orders_test()
BEGIN
UPDATE mgj_orders SETuse=2 WHERE status=1 AND now()-addtime>180; (注意use是关键字)
END $$
DELIMITER;
MySQL解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。其中DELIMITER 定好结束符为"$$", 然后最后又定义为 “;” , MYSQL的默认结束符为”;“.
但有时候,不希望MySQL这么做。在为可能输入较多的语句,且语句中包含有分号。
这种情况下,就需要事先把delimiter换成其它符号,如//或

出现之后,mysql解释器才会执行这段语句 .

4、创建事件,每隔一天自动调用修改过程 从这天的10点每天运行一次

CREATE EVENT IF NOT EXISTS mgj_orders_event
ON SCHEDULE EVERY 1 day STARTS '2017-04-23 14:25:00'
ON COMPLETION PRESERVE
DO CALL mgj_orders_test();
–以下是对事件的补充
–开启事件
ALTER EVENT mgj_orders_event ON
COMPLETION PRESERVE ENABLE;

–关闭事件
ALTER EVENT mgj_orders_enevt ON
COMPLETION PRESERVE DISABLE;

– 删除事件
EVENT使用DROP EVENT语句来删除已经创建的事件,语法如下:

DROP EVENT [IF EXISTS] mgj_orders_event;

–修改事件
–使用ALTER EVENT 来修改事件,具体的ALTER语法如下,与创建事件的语法类似:
ALTER EVENT
mgj_orders_event
ON SCHEDULE EVERY 3 minute STARTS '2017-04-23 14:45:00'
ON COMPLETION PRESERVE
DO
UPDATE mgj_orders SETuse=2 WHEREstatus=1 AND now() -addtime > 180;
–查看所有事件
SHOW EVENTS
–临时关闭事件
ALTER EVENTS event_name DISABLE
–查看事件创建信息
SHOW CREATE EVENT mgj_orders_event;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值