navicate怎么在mysql的定时事务开启
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了navicate怎么在mysql的定时事务开启相关的知识,希望对你有一定的参考价值。
1、启动Navicat for mysql,新建数据库连接,打开数据库,可能有点啰嗦。
2、可以先查看定时任务的是否开启。通过以下命令:show variables like '%sche%';
3、如果其设置值为为 OFF 或 0 ,通过执行下列语句,来开启event_scheduler,set global event_scheduler =1,把设置为设为ON 或 1。
4、新建一个函数 ,取名为update_qiandao ,内容为 UPDATE week7_user SET isqiandao = 0
5、参照上图,新建一个事件 ,在定义里写 call update_qiandao() --也就是之前定义的函数
在“计划”选项卡中设置 执行时间,这里我选择的是每天。
6、完成结束
参考技术A mysql要实现定时执行sql语句就要用到Event具体操作如下:
先看看看event 事件是否开启
show variables like '%sche%';
如没开启,则开启。需要数据库超级权限
set global event_scheduler =1;
创建存储过程 update_a (注:就是你要执行的sql语句)
mysql> create procedure update_a() update a set a.y_avg=(select avg(b.youhao) from b where a.a_id=b.a_id);
创建一个定时任务:event e_updateA
mysql> create event if not exists e_updateA
-> on schedule every 60 second ---设置60秒执行一次
-> on schedule at date_add(now(),interval 1 minute) ---在一分钟后执行
-> on completion preserve
-> do call update_a(); ---执行update_a()存储过程
创建Event之后,sql语句就定时执行一次。
关闭事件任务
mysql> alter event e_updateA ON
-> COMPLETION PRESERVE DISABLE;
开启事件任务
mysql> alter event e_updateA ON
-> COMPLETION PRESERVE ENABLE;本回答被提问者采纳 参考技术B 查看event是否开启
如果不做这一步,事件创建后,
将会发现‘事件计划已关闭。事件只能在服务器启动并开启事件计划时才能处理。'的警告。
通过下列语句l爱查询event是否开启
show variables like '%sche%';
通过执行下列语句,来开启event_scheduler
set global event_scheduler =1;
新建存储过程
可以从navicat界面的‘函数’进入,也可以直接用查询建立。
查询建立:
CREATE PROCEDURE test ()
BEGIN
update profile set single=19 where id = any (SELECT id FROM (select tmp.* from profile tmp WHERE birthday<=NOW()) as p);
END;
界面中建立:
命名为test
BEGIN
update profile set single=19 where id = any (SELECT id FROM (select tmp.* from profile tmp WHERE birthday<=NOW()) as p);
END
这个地方要注意,同一个表不能作为本表的subquery,所以就从临时表里把数据取出来,这样就不是同查同更。
3
新建Event
从界面中的‘事件’进入
定义中就直接写
call test();
计划里,基本上看看就知道什么意思
不过starts和ends的时间格式应该是:2012-12-11 19:06:00
我设成20秒一更新
经测试成功
以上是关于navicate怎么在mysql的定时事务开启的主要内容,如果未能解决你的问题,请参考以下文章
Navicate for Mysql 可以导出ER图么,怎么导出