MYSQL创建一个触发器,用于24小时刷新一下数据库的表.

MYSQL创建一个触发器,用于24小时刷新一下数据库的表.,第1张

1.从语法上来说,你这样写是没有问题的,因为这里把new当成表名。编译自然是成功的,但是当插入数据用到触发器的时候,就会报找不到new表的错误了。

2.列出每一个字段是可以的,但是写起来比较麻烦,要这样:

insert into ct_master1 value (new.c1,new.c2,new.c3)

简洁的方法,就是插入的时候设定一个唯一性的值,比如id

然后就可以把insert改成:

insert into ct_master1 select * from ct_master where ct_master.id=NEW.id

这样就可以了。

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

如还有问题再联系我


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/372735.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存