MySQL定时执行任务

查看event是否开启

show variables like '%sche%';

将事件计划开启
set global event_scheduler =1;

创建存储过程test
CREATE PROCEDURE test ()  
BEGIN  
update examinfo SET endtime = now() WHERE id = 14;  
END; 
创建event e_test
create event if not exists e_test  
on schedule every 30 second  
on completion preserve  
do call test();

每隔30秒将执行存储过程test。

关闭事件任务

alter event e_test ON   
COMPLETION PRESERVE DISABLE;

开户事件任务
alter event e_test ON   
COMPLETION PRESERVE ENABLE;



### 创建和执行 MySQL 定时任务 #### 开启 Event Scheduler 为了使 MySQL 支持定时任务功能,需确认 `event_scheduler` 参数已启用。可以通过以下命令查看当前状态并进行设置: ```sql SET GLOBAL event_scheduler = ON; ``` 此操作会激活 MySQL事件调度器[^3]。 #### 验证 Event Scheduler 状态 可以查询 `information_schema.GLOBAL_VARIABLES` 表来验证 `EVENT_SCHEDULER` 是否处于开启状态: ```sql SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME='EVENT_SCHEDULER'; ``` 如果返回值为 'ON' 则表示已经成功启动了事件调度器[^5]。 #### 创建存储过程 (可选) 对于复杂的业务逻辑或者需要多次调用相同代码的情况,建议先创建一个存储过程用于封装待执行的操作。下面是一个简单的例子: ```sql DELIMITER $$ CREATE PROCEDURE my_procedure() BEGIN -- 插入一些数据到表中 INSERT INTO example_table VALUES ('some value'); END$$ DELIMITER ; ``` 这里定义了一个名为 `my_procedure` 的存储过程,在其中实现了向指定表格插入记录的功能[^4]。 #### 创建定时任务(Event) 一旦准备好了要定期运行的任务(可以直接写 SQL 或者调用之前创建好的存储过程),就可以利用 CREATE EVENT 来安排这些工作了。例如: ```sql CREATE EVENT IF NOT EXISTS daily_cleanup_event ON SCHEDULE EVERY 1 DAY STARTS CURRENT_DATE + INTERVAL 1 DAY DO CALL my_procedure(); ``` 这段脚本会在每天午夜自动触发一次 `daily_cleanup_event` ,进而调用前面提到过的 `my_procedure()` 进行处理。 #### 查看现有 Events 想要了解目前有哪些正在使用的 events 可以通过如下方式获取列表: ```sql SHOW EVENTS FROM your_database_name; ``` 这将显示特定数据库下的所有活动中的定时任务信息。 #### 删除不再需要的 Events 当某些定时任务完成了使命或是不再被需求时,应当及时清理掉它们以免占用资源。使用 DROP EVENT 命令即可轻松完成这一目标: ```sql DROP EVENT IF EXISTS old_event_name; ``` 该指令会移除名称匹配的老版本定时任务实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值