对MySQL event的相关理解(2)

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表(只执行一次,任务完成后就终止该事件):

DELIMITER $$

CREATE EVENT e_test
 

ON SCHEDULE EVERY 1 DAY
 ON COMPLETION NOT PRESERVE
 DO TRUNCATE TABLE test.aaa;
 

END

$$

DELIMITER ;

9)每天的 10点执行一次update_test的存储过程

DELIMITER $$
 
CREATE EVENT event_update_test

ON SCHEDULE EVERY 1 DAY

STARTS '2015-07-31 10:00:00'

ON  COMPLETION  PRESERVE

ENABLE

DO

BEGIN

call update_test();

END

$$

DELIMITER ;

修改事件(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;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a301baa61d9eea3113046caaa61337da.html