mysql on completion not preserve_mysql定时计划任务,ON COMPLETION [NOT] PRESERVE 当单次计划任务执行完毕后或当重复性的计划任务执行到了...

本文详细介绍了MySQL事件调度器中的ONCOMPLETION[NOT]PRESERVE参数,解释了如何设置一次性或周期性任务,并在任务执行完毕后是否保留事件。示例展示了如何创建一个每天12点向表yyy插入数据的事件,并说明了在ONCOMPLETIONNOTPRESERVE情况下,事件会在执行后自动删除。此外,还提到了在my.ini配置文件中设置event_scheduler=ON以确保服务重启后事件仍然启用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当为on completion preserve 的时候,当event到期了,event会被disable,但是该event还是会存在

当为on completion not preserve的时候,当event到期的时候,该event会被自动删除掉.

[ON COMPLETION [NOT] PRESERVE]

ON COMPLETION参数表示"当这个事件不会再发生的时候",即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而PRESERVE的作用是使事件在执行完毕后不会被Drop掉,建议使用该参数,以便于查看EVENT具体信息。

create event test

ON SCHEDULE AT '2007-09-01 12:00:00' + INTERVAL 1 DAY

on completion not preserve

do insert into yyy values('hhh','uuu');

解释:从2007-09-01开始,每天对表yyy在12:00:00进行一个插入操作。而且只执行一次(on completion not preserve )

ON COMPLETION [NOT] PRESERVE 当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而声明PRESERVE的作用是使事件在执行完毕后不会被Drop掉

提醒:虽然这里用set global event_scheduler = on语句开启了事件,但是每次重启电脑。或重启mysql服务后,会发现,事件自动关闭(event_scheduler=OFF),所以想让事件一直保持开启,最好修改配置文件,让mysql服务启动的时候开启时间,只需要在my.ini配置文件的[mysqld]部分加上event_scheduler=ON 即可,如下:

真实的开发环境中,会遇到mysql服务重启或者断电的情况,此时则会出现事件调度器被关闭的情况,所有事件都不在起作用,要想解决这个办法,则需要在mysql.ini文件中加入event_scheduler = ON; 的语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值