Mysql event

基本语法:

CREATE
    [DEFINER = { user | CURRENT_USER }]
    EVENT
    [IF NOT EXISTS]
    event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT 'comment']
    DO event_body;

schedule:
    AT timestamp [+ INTERVAL interval] ...
  | EVERY interval
    [STARTS timestamp [+ INTERVAL interval] ...]
    [ENDS timestamp [+ INTERVAL interval] ...]

interval:
    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
              WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
              DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

event可以指定某个时间执行某件事

create event eventTest on SCHEDULE at CURRENT_TIMESTAMP + INTERVAL 2 second 
do 
insert into testA values(2);

间隔一段时间执行

create event eventTest on SCHEDULE every 2 second
do 
insert into testA values(2);

注:对于间隔一天,修改系统时间是不会触发event执行,网上说event不是定点执行,而是根据算距下一个时间点时间长执行的。不过有时修改系统时间,在不确定的时间里会执行一次event,如第一次执行时间是12:50:50,修改系统时间,第二天的12:50:50不一定会执行,但有时候会在12:55:23执行,有时也不会,暂时没法确定是啥原因,如知悉,能否留言。

而间隔几分钟或者几秒的,则会按时执行。估计是算时间长执行的。

删除event

drop event if exists eventTest;

查看event是否开启(默认是OFF)

Select @@event_scheduler;

设置event开启

SET GLOBAL event_scheduler = on;

Mysql重启后event事件会不执行,修改安装目录下的my.ini文件,添加

event_scheduler = 1

 

posted @ 2014-03-05 23:21  世间安得两全法  阅读(245)  评论(0)    收藏  举报