mysql 事件及定时器

来源:互联网 发布:网络个人信息安全问题 编辑:程序博客网 时间:2024/05/18 15:55


一、语法:

create event

event_name 

on schedule

[on completion[not] preserve]

[enable|desable]

[comment 'comment']

do                   

[要执行的sql语句]

 

说明:

1.event_name

   

   声明事件名称

2.on schedule

 

有两种设定计划任务的方式:

单次计划任务:

   at 时戳

重复的计划任务(基于事件的定时器)

   every时间的数量 时间单位 [starts时戳][ends时戳]

   starts:事件开始执行时间;ends:事件停止执行时间;

   在两种计划任务中,时戳可以是任意的TIMESTAMPDATETIME 数据类型,要求提供的是将来的时间(大于CURRENT_TIMESTAMP),而且小于Unix时间的最后时间(等于或小于'2037-12-31 23:59:59')。

 

   时间单位是关键词YEARMONTHDAYHOURMINUTE或者SECOND

3.[on completion[not] preserve]

 

completion当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段时,通过声明preserve来设定事件是否被drop掉。

4.[enable|desable]

 

ENABLE开启事件

DESABLE关闭事件

5.comment

 

注释

6.do sql_statement

 

执行的sql语句

 

 

 

二、设置事件调度器

查看是否event_scheduler是否开启

mysql> show variables like '%event%';

注:value = ON说明事件调度器已经开启;

 

设置开启

mysql> set global event_scheduler=on;

三、例子

创建表:

create table school

(

id int primary key not null auto_increment,

schoolname varchar(20)

)

 

创建单次执行任务事件:

create event myevent

on schedule at '2016-12-815:53:00'

on completion not preserve

enable

do

insert intoschool(schoolname) values('1111');

 

注:报错 可能是事件已经存在,先执行:drop eventif exists myevent

再执行事件。

 

创建定时器即 重复执行任务事件1

create event myevent

on schedule every 1 second

--每秒执行一次;还可以设置成:yearmonthdayhourminute

starts '2016-12-8 17:35:00' --开始执行时间

enable

do

insert intoschool(schoolname) values('1111');

 

创建定时器即 重复执行任务事件2

create event myevent

on schedule every 1 second

starts '2016-12-8 17:47:00'

ends current_timestamp +interval 1 minute

--一分钟后停止执行;结束时间必须大于开始时间

on completion not preserve

--任务停止执行后,drop掉事件

enable

do

insert intoschool(schoolname) values('1111');

0 0
原创粉丝点击