您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mysql 定时任务创建

2024/4/20 23:32:28发布16次查看
复制代码 代码如下: show variables like '%sche%'; 将事件计划开启 复制代码 代码如下: set global event_scheduler =1; 创建存储过程test 复制代码 代码如下: create procedure test () begin update examinfo set endtime = now() where id = 14; end; 创
复制代码代码如下:
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,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.
关闭事件任务
复制代码代码如下:
alter event e_test on 
completion preserve disable;
开户事件任务
复制代码代码如下:
alter event e_test on 
completion preserve enable;
以上测试均成功,测试环境为mysql 5.4.2-beta-community mysql community server(gpl)
以上的相关内容就是对mysql定时执行的介绍,望你能有所收获。
mysql 计划任务重启后消失
我们只要修改一配置即可
event_scheduler在mysql的config中设置为off有关。去mysql中将配置改为on则就搞定了。
更详细的大家可以往下看
mysql5.1.x版本中引入了一项新特性event,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。
要查看当前是否已开启事件调度器,可执行如下sql:
show variables like 'event_scheduler';

select @@event_scheduler;

show processlist;
若显示:
+-----------------+-------+
| variable_name   | value |
+-----------------+-------+
| event_scheduler | off   |
+-----------------+-------+
则可执行
set global event_scheduler = 1;

set global event_scheduler = on;
来开启,也可以直接在启动命令加上“–event_scheduler=1”,例如:
mysqld ... --event_scheduler=1
my.ini or my.cnf 中的
[mysqld]
添加 event_scheduler=on
创建事件(create event)
先来看一下它的语法:
create event [if not exists] event_name
on schedule schedule
[on completion [not] preserve]
[enable | disable]
[comment 'comment']
do sql_statement;
schedule:
at timestamp [+ interval interval]
| every interval [starts timestamp] [ends timestamp]
interval:
quantity {year | quarter | month | day | hour | minute |
            week | second | year_month | day_hour | day_minute |
            day_second | hour_minute | hour_second | minute_second}
1)首先来看一个简单的例子来演示每秒插入一条记录到数据表
use test;
create table aaa (timeline timestamp);
create event e_test_insert
on schedule every 1 second 
do insert into test.aaa values (current_timestamp);
等待3秒钟后,再执行查询成功。
2) 5天后清空test表:
create event e_test
on schedule at current_timestamp + interval 5 day
do truncate table test.aaa;
3) 2007年7月20日12点整清空test表:
create event e_test
on schedule at timestamp '2007-07-20 12:00:00'
do truncate table test.aaa;
4) 每天定时清空test表:
create event e_test
on schedule every 1 day
do truncate table test.aaa;
5) 5天后开启每天定时清空test表:
create event e_test
on schedule every 1 day
starts current_timestamp + interval 5 day
do truncate table test.aaa;
6) 每天定时清空test表,5天后停止执行:
create event e_test
on schedule every 1 day
ends current_timestamp + interval 5 day
do truncate table test.aaa;
7) 5天后开启每天定时清空test表,一个月后停止执行:
create event e_test
on schedule every 1 day
starts current_timestamp + interval 5 day
ends current_timestamp + interval 1 month
do truncate table test.aaa;
[on completion [not] preserve]可以设置这个事件是执行一次还是持久执行,默认为not preserve。
8) 每天定时清空test表(只执行一次,任务完成后就终止该事件):
create event e_test
on schedule every 1 day
on completion not preserve
do truncate table test.aaa;
[enable | disable]可是设置该事件创建后状态是否开启或关闭,默认为enable。
[comment ‘comment']可以给该事件加上注释。
修改事件(alter event)
alter event event_name
[on schedule schedule]
[rename to new_event_name]
[on completion [not] preserve]
[comment 'comment']
[enable | disable]
[do sql_statement]
1) 临时关闭事件
alter event e_test disable;
2) 开启事件
alter event e_test enable;
3) 将每天清空test表改为5天清空一次:
alter event e_test
on schedule every 5 day;
删除事件(drop event)
语法很简单,如下所示:
drop event [if exists] event_name
例如删除前面创建的e_test事件
drop event e_test;
当然前提是这个事件存在,否则会产生error 1513 (hy000): unknown event错误,因此最好加上if exists
drop event if exists e_test;
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product