php如何创建mysql事件_MySQL——事件

MySQL的事件调度器允许用户设置定时任务,例如定期清理数据或统计信息。不同于触发器由数据库操作触发,事件根据时间间隔自动执行。启用事件调度器并在配置文件中设置`event_scheduler=on`使其持久化。创建事件包括定义名称、时间间隔、执行选项等,并可通过ALTER语句修改。在实际应用中,常将复杂SQL封装在存储过程中,以供事件调用。注意事件执行频率与执行时间的关系,避免冲突。
摘要由CSDN通过智能技术生成

在数据库管理中,经常需要周期的执行某一个命令或者SQL语句来完成某项工作,MySQL在5.1以后增加了事件调度器功能,可以很方便的实现定时任务,定期执行指定的命令,比如可以定期清理垃圾数据,定期统计一些信息等。

MySQL事件类似于触发器,不同的是触发器是由特定的数据库操作(增、删、改)触发,事件是由“时间”触发,每隔指定的时间间隔会自动触发。

要使用MySQL的事件,需要查看用户是否有权限:

上图显示当前用户 "root" 拥有创建及修改事件的权限,此外,还要查看事件是否开启:

SHOW  VARIABLES like 'event_scheduler'

e74d2029d00cd264bbb3f336e53f7341.png

这里VALUE的值是 OFF ,说明事件没有开启,需手动开启事件,开启的语句是:

SET GLOBAL event_scheduler=on

然后我们再查看:

74f9020a32806c4b9727218bc9f3088f.png

这时虽然显示是开启的,不过这只是暂时的,重启MySQL后,又会恢复到关闭状态,如果想一直开启事件,需在MySQL的配置文件(Windows系统是my.ini,Linux系统是my.cnf)中加一句话:

event_scheduler=on

添加这句话之后,重启MySQL,之后事件就一直处于开启状态了。

创建事件的语句是:

24ed554a86dd485fd126ebec4aaff7d2.png

其中 :

event_name 是事件的名字;

schedule 是事件的时间间隔;

ON COMPLETION [NOT] PRESEVER 可选项,是定义事件是否循环执行( 即执行一次,还是循环执行),默认执行一次,即 NOT PRESEVER;

ENABLE | DISABLE | DISABLE ON SLAVE 可选项,用来定义事件创建后是否为活动的,默认为活动的;

comment 可选,用来添加备注;

event_body 事件的主体代码;

下面来创建一个事件,创建之前,先建立一个简单的会用到的表:

303d9a185dfd1403f2fe01ad600385f3.png

下面创建一个事件,每隔5秒向刚刚新建的表里插入一条数据:

790c1b805fe49d9dbeb2515cf890f95e.png

然后我们查看数据,是否为间隔5秒:

92045c95aa3aecd6a073376c16b47d11.png

正如我们所料,插入的数据间隔5秒。事件创建之后还可以用 ALTER 语句进行修改,语法跟创建时一样,这里就不再重复说明,下面我们就把这个事件修改为间隔10秒插入一次数据:

50dd0fad6604ada0fc99ab3d7ecad40c.png

03b6be7d3573831e7c7e21af6c6761e9.png

上面的结果显示,确实被改成了间隔10秒。创建的事件还可以用 ALTER 语句改变状态,开启或者关闭,可以用下面的语句把这个事件暂时关闭:

70cfcdcb96d74bfc5d7497b2c1902fbe.png

开启的话是:ALTER  EVENT event_name ENABLE 。

也可以删除创建的事件,跟删除表、试图、存储过程之类的一样,删除事件也用DROP语句:

在实际应用中,通常会把复杂的SQL语句封装在一个存储过程中,这样在事件执行的时候只需要做一个简单的调用。另外,如果一个事件执行需要比较长的时间,而事件的时间间隔又很短,可能会发生上一个事件还没执行完,又到了下一个事件开始的时间点,这一点需要注意。

不懂的留言,每天一篇分享,玩转我们共同的爱好!

你也来投搞!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值