修改事件
在 MySQL 中,事件创建之后,可以使用 ALTER EVENT 语句修改其定义和相关属性。
修改事件的语法格式如下:
ALTER
[DEFINER = user]EVENT event_name[ON SCHEDULE schedule]
[ON COMPLETION [NOT]PRESERVE][RENAME TO new_event_name]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'string']
[DO event_body]
ALTER EVENT 语句中的子句与MySQL创建事件一节中讲解的基本相同,这里不再赘述。另外,ALTER EVENT 语句还有一个用法就是让一个事件关闭或再次让其活动。
例 1
修改 e_test 事件,让其每隔 30 秒向表 tb_eventtest 中插入一条数据,SQL 语句和运行结果如下所示:
mysql> ALTER EVENT e_test ON SCHEDULE EVERY 30SECOND-> ONCOMPLETION PRESERVE-> DO INSERT INTO tb_eventtest(user,createtime) VALUES('MySQL',NOW());
Query OK,0 rows affected (0.04sec)
mysql> TRUNCATE TABLEtb_eventtest;
Query OK,0 rows affected (0.04sec)
mysql> SELECT * FROMtb_eventtest;+----+-------+---------------------+
| id | user | createtime |
+----+-------+---------------------+
| 1 | MySQL | 2020-08-28 13:23:49 |
| 2 | MySQL | 2020-08-28 13:24:19 |
+----+-------+---------------------+
2 rows in set (0.00 sec)
由结果可以看出,修改事件后,表 tb_eventtest 中的数据由原来的每 5 秒插入一条,变为每 30 秒插入一条。
使用 ALTER EVENT 语句还可以临时关闭一个已经创建的事件。
例 2
临时关闭事件 e_test 的具体代码如下所示:
mysql> ALTEREVENT e_test DISABLE;
Query OK,0 rows affected (0.00 sec)
查询 tb_eventtest 表中的数据,SQL 语句如下:
SELECT * FROM tb_eventtest;
为了确定事件已关闭,可以查询两次(每次间隔 1 分钟)tb_eventtest 表的数据,SQL 语句和运行结果如下所示:
mysql> TRUNCATE TABLEtb_eventtest;
Query OK,0 rows affected (0.05sec)
mysql> SELECT * FROMtb_eventtest;
Emptyset (0.00sec)
mysql> SELECT * FROMtb_eventtest;
Emptyset (0.00 sec)
由结果可以看出,临时关闭事件后,系统就不再继续向表 tb_eventtest 中插入数据了。
删除事件
在 MySQL 中,可以使用 DROP EVENT 语句删除已经创建的事件。语法格式如下:
DROP EVENT [IF EXISTS] event_name
例 3
删除事件 e_test,SQL 语句和运行结果如下:
mysql> DROP EVENT IF EXISTSe_test;
Query OK,0 rows affected (0.01sec)
mysql> SELECT * FROMinformation_schema.events \G
Emptyset (0.00 sec)