1. Event事件介绍
有时候我们想让MySQL服务器在某个时间点或者每隔一段时间自动地执行一些语句 , 这时候就需要去创建一个事件。其实我觉得MySQL的事件就和Linux操作系统的定时任务一样(Crontab) , 设置某个时间点或者按照设置的时间频率执行某些特定任务。和TRIGGER触发器一样 , 也不用像FUNCTION函数和PROCEDURE存储过程需要进行调用触发 , 事件只需要到设定的时间MySQL服务器自动触发。
MySQL支持定时执行的计划任务 , 类似于Unix crontab或者Windows定时任务 ,被称为事件(Event)或者计划事件。事件是一个存储在数据库服务器中的SQL程序 , 在指定的时间范围内定期执行 , 调度和执行事件的服务被称为事件调度器(Event Scheduler)。
事件和触发器类似 , 都是在某些事情发生的时候启动。当数据库上启动一条语句的时候 , 触发器就启动了 , 而事件是根据调度事件来启动的。由于它们彼此相似 , 所以事件也称为临时性触发器。
事件取代了原先只能由操作系统的计划任务来执行的工作 , 而且MySQL的事件调度器可以精确到每秒钟 执行一个任务 , 而操作系统的计划任务(如: Linux下的CRON或Windows下的任务计划)只能精确到 每分钟执行一次。
事件的优缺点
优点 : 一些对数据定时性操作不再依赖外部程序 , 而直接使用数据库本身提供的功能 , 可以实现每秒钟 执行一个任务 , 这在一些对实时性要求较高的环境下就非常实用
缺点 : 定时触发 , 不可以直接调用
2. Event管理
2.1 相关变量和服务器选项
MySQL事件调度器通过全局系统变量event_scheduler控制是否允许和启动事件调度器 , 默认是关闭的 , 它有三种可能的取值 :
ON, 表示启用事件调度器线程 , 负责事件的调度和执行, 系统自动打开专用的线程。OFF, 默认值, 关闭事件调度器线程 ,SHOW PROCESSLIST命令不再显示相关信息 , 计划事件不再执行。DISABLED, 禁用事件调度器线程 , 不但停止了调度器线程 , 而且无法通过ON或者OFF设置它的状态。
MySQL事件调度器event_scheduler负责调用事件 , 。这个调度器不断地监视一个事件 是否要调用 , 要创建事件 , 必须打开调度器服务器系统变量和服务器选项:
查看
event_schedulerSELECT @@event_scheduler; SHOW VARIABLES LIKE 'event%';范例
MariaDB [(none)]> select @@event_scheduler; +-------------------+ | @@event_scheduler | +-------------------+ | OFF | +-------------------+ 1 row in set (0.000 sec) MariaDB [(none)]> SHOW VARIABLES LIKE 'event%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | OFF | +-----------------+-------+ 1 row in set (0.001 sec)临时调整
event功能开启功能命令
SET GLOBAL event_scheduler = 1; SET GLOBAL event_scheduler = ON;关闭功能命令
SET GLOBAL event_scheduler = 0; SET GLOBAL event_scheduler = OFF;范例
MariaDB [(none)]> SET GLOBAL event_scheduler = 1; Query OK, 0 rows affected (0.000 sec) MariaDB [(none)]> SHOW VARIABLES LIKE 'event%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | ON | +-----------------+-------+ 1 row in set (0.000 sec) MariaDB [(none)]> show processlist ; +----+-----------------+-----------+------+---------+------+--------------------------+------------------+----------+ | Id | User | Host | db | Command | Time | State | Info | Progress | +----+-----------------+-----------+------+---------+------+--------------------------+------------------+----------+ ..... | 38 | event_scheduler | localhost | NULL | Daemon | 192 | Waiting on empty queue | NULL | 0.000 | +----+-----------------+-----------+------+---------+------+--------------------------+------------------+----------+ 7 rows in set (0.000 sec) 持久化配置
[root@centos8 ~]# cat /etc/my.cnf [client-server] [mysqld] event_scheduler=ON !includedir /etc/my.cnf.d 或 [root@centos8 ~]#vim /etc/my.cnf.d/mariadb-server.cnf [mysqld] event_scheduler=ON [root@centos8 ~]#systemctl restart mariadb 禁用
event_scheduler只有在启动服务的时候才能够将事件调度器设置为
DISABLED,运行时无法从ON或者OFF设置为DISABLED; 同样也无法在运行时从DISABLED修改为其他状态。在启动服务时指定以下命令行参数可以禁用事件调度器 :--event-scheduler=DISABLED在
MySQL配置文件中的[mysqld]部分增加以下配置项:event_scheduler=DISABLED[root@localhost mysql]# cat /etc/my.cnf [client-server] [mysqld] event_scheduler=DISABLED !includedir /etc/my.cnf.d MariaDB [(none)]> SHOW VARIABLES LIKE 'event%'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | event_scheduler | DISABLED | +-----------------+----------+ 1 row in set (0.001 sec) MariaDB [(none)]> SET GLOBAL event_scheduler = 1; ERROR 1290 (HY000): The MariaDB server is running with the --event-scheduler=DISABLED or --skip-grant-tables option so it cannot execute this statement
2.2 管理事件
create event语句创建一个事件。每个事件由两个主要部分组成 , 第一部分是事件调度(event schedule) , 表示事件何时启动以及按什么频率启动 , 第二部分是事件动作(event action ) , 这是事件启动时执行的代码 , 事件的动作包含一条SQL语句 , 它可能是一个简单地insert或者update语句 , 也可以使一个存储过程或者benin...end语句块 , 这两种情况允许我们执行多条SQL
一个事件可以是活动(打开)的或停止(关闭)的 , 活动意味着事件调度器检查事件动作是否必须调用 , 停止意味着事件的声明存储在目录中 , 但调度器不会检查它是否应该调用。在一个事件创建之后 , 它立即变为活动的 , 一个活动的事件可以执行一次或者多次
创建事件
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_name : 创建的event名字 , 必须是唯一确定的
ON SCHEDULE : 计划任务
schedule : 决定event的执行时间和频率(注意时间一定要是将来的时间 , 过去的时间会出错) , 有两种形式AT和EVERY
[ON COMPLETION [NOT] PRESERVE] : 可选项 , 默认是ON COMPLETION NOT PRESERVE 即计划任务执行完毕后自动drop该事件 ; ON COMPLETION PRESERVE则不会drop掉
[COMMENT 'comment'] : 可选项 , comment用来描述event ; 相当注释 , 最大长度64个字节
[ENABLE | DISABLE] :设定event的状态 , 默认ENABLE : 表示系统尝试执行这个事件 , DISABLE : 关闭该事情 , 可以用alter修改
DO event_body : 需要执行的sql语句 , 可以是复合语句
提示 :
event事件是存放在mysql.event表中
创建单此定时执行事件
AT TIMESTAMP 时间字符串 [+ INTERVAL INTERVAL]AT TIMESTAMP表示该事件只执行一次 ,TIMESTAMP表示一个具体的时间点 , 后面可以加上一个时间间隔 , 表示在这个时间间隔后事件发生。[+ INTERVAL INTERVAL]表示延迟触发时间 ;需要注意的是 ,
TIMESTAMP和具体字符串连用 , 如果不是具体字符串( 如CURRENT_TIMESTAMP取当前时间等 ) , 则不加TIMESTAMP;注 : 就在
AT ...语句和DO ...语句中间加ON COMPLETION PRESERVE,指定某个时间点执行的事件执行完成后就不会被删除了。#往demo_1119表中插入一行数据 , 执行时间 : 2020-11-20 00:00:00 CREATE EVENT demo_event2 ON SCHEDULE AT TIMESTAMP '2020-11-20 00:00:00' DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '陈哈哈', NOW()) mysql> select * from demo_1119; +-----+-----------+---------------------+ | id | name | createTime | +-----+-----------+---------------------+ | 145 | 陈哈哈 | 2020-11-20 00:00:00 | +-----+-----------+---------------------+ 9 rows in set (0.00 sec) #往demo_1119表中插入一行数据 , 执行时间 : 当前时间往后5个小时; CREATE EVENT demo_event2 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 HOUR DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '陈哈哈', NOW())创建循环定时执行事件
EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]EVERY表示循环执行该事件 , 其中STARTS子句用于指定开始时间 ;ENDS子句用于指定结束时间。时间配置说明
表示事件间隔的单位除了
HOUR, 还可以用YEAR、QUARTER、MONTH、DAY、HOUR、MINUTE、WEEK、SECOND、YEAR_MONTH、DAY_HOUR、DAY_MINUTE、DAY_SECOND、HOUR_MINUTE、HOUR_SECOND、MINUTE_SECOND这些单位 ,根据具体需求选用我们需要的时间间隔单位。每隔1分钟执行
ON SCHEDULE EVERY 1 MINUTE每天凌晨1点执行
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)每个月的第1天凌晨1点执行
ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL 1 MONTH),INTERVAL 1 HOUR)每3个月 , 从现在起1周后开始
ON SCHEDULE EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + 1 WEEK每12个小时 , 从现在起30分钟后开始 , 并于现在起4个星期后结束
ON SCHEDULE EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK
#从当前开始 , 每10秒往demo_1119表中插入一行数据 CREATE EVENT demo_event3 ON SCHEDULE EVERY 10 SECOND ON COMPLETION PRESERVE DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '陈哈哈', NOW()) mysql> select * from demo_1119; +-----+-----------+---------------------+ | id | name | createTime | +-----+-----------+---------------------+ | 145 | 陈哈哈 | 2020-11-19 11:10:39 | | 146 | 陈哈哈 | 2020-11-19 11:10:49 | | 147 | 陈哈哈 | 2020-11-20 11:10:59 | | 148 | 陈哈哈 | 2020-11-20 11:11:09 | | 149 | 陈哈哈 | 2020-11-20 11:11:19 | | 150 | 陈哈哈 | 2020-11-20 11:11:29 | | 151 | 陈哈哈 | 2020-11-20 11:11:39 | +-----+-----------+---------------------+ 9 rows in set (0.00 sec) #从2020-11-20 12:00:00开始 , 每10分钟往demo_1119表中插入一行数据 CREATE EVENT demo_event4 ON SCHEDULE EVERY 10 MINUTE STARTS '2020-11-20 12:00:00' ON COMPLETION PRESERVE DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '陈哈哈', NOW()) mysql> select * from demo_1119; +-----+-----------+---------------------+ | id | name | createTime | +-----+-----------+---------------------+ | 152 | 陈哈哈 | 2020-11-20 12:00:00 | | 153 | 陈哈哈 | 2020-11-20 12:10:00 | | 154 | 陈哈哈 | 2020-11-20 12:20:00 | | 155 | 陈哈哈 | 2020-11-20 12:30:00 | | 156 | 陈哈哈 | 2020-11-20 12:40:00 | +-----+-----------+---------------------+ 5 rows in set (0.00 sec) #从当前时间一小时后开始 , 每10分钟往demo_1119表中插入一行数据;已经测试过可用 , 我就不再贴冗余查询的数据咯~ CREATE EVENT demo_event5 ON SCHEDULE EVERY 10 MINUTE STARTS CURRENT_TIMESTAMP+INTERVAL 1 HOUR ON COMPLETION PRESERVE DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '陈哈哈', NOW()) #从当前时间一天后开始 , 每1小时往demo_1119表中插入一行数据 , 三天后结束 CREATE EVENT demo_event5 ON SCHEDULE EVERY 1 HOUR STARTS CURRENT_TIMESTAMP+INTERVAL 1 DAY ENDS CURRENT_TIMESTAMP+INTERVAL 3 DAY ON COMPLETION PRESERVE DO INSERT INTO `demo_1119` (`id`, `name`, `createTime`) VALUES (null, '陈哈哈', NOW()) #每天零点定时清一下demo_1119表数据 CREATE EVENT demo_event5 ON SCHEDULE EVERY 1 DAY STARTS '2020-11-20 00:00:00' ON COMPLETION PRESERVE DO TRUNCATE table `demo_1119`
查看event
SHOW EVENTS [{FROM | IN} schema_name]
[LIKE 'pattern' | WHERE expr]注意 : 事件执行完即释放 , 如立即执行事件 , 执行完后 , 事件便自动删除 , 多次调用事件或等待执行事件,才可以用上述命令查看到。
修改event
ALTER
[DEFINER = { user | CURRENT_USER }]
EVENT event_name
[ON SCHEDULE schedule]
[ON COMPLETION [NOT] PRESERVE]
[RENAME TO new_event_name]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
[DO event_body]关闭事件任务:
ALTER EVENT 事件名称 ON COMPLETION PRESERVE DISABLE;开启事件任务:
ALTER EVENT 事件名称 ON COMPLETION PRESERVE ENABLE;
注意: alter event语句可以修改事件的定义和属性。可以让一个事件成为停止的或者再次让它活动 , 也可以修改一个事件的名字或者整个调度。然而当一个使用ON COMPLETION NOT PRESERVE属性定义的事件最后一次执行后 , 事件直接就不存在了 , 不能修改
删除event
DROP EVENT [IF EXISTS] event_name2.3 范例
范例 : 创建立即启动事件
MariaDB [(none)]> create database testdb;
#创建一个表记录每次事件调度的名字和事件戳
MariaDB [testdb]> create table events_list(event_name varchar(20) not null,
event_started timestamp not null);
#临时关闭事件调度功能
MariaDB [testdb]> set global event_scheduler=0;
Query OK, 0 rows affected (0.000 sec)
MariaDB [testdb]> show variables like 'event_scheduler';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+
1 row in set (0.001 sec)
#创建一次性事件
MariaDB [testdb]> create event event_now on schedule at now() do insert
into events_list values('event_now', now());
Query OK, 0 rows affected (0.001 sec)
#因为事件调度功能禁用 , 所有表中无记录
MariaDB [testdb]> select *from events_list;
Empty set (0.000 sec)
#查看事件
MariaDB [testdb]> show events\G;
*************************** 1. row ***************************
Db: testdb
Name: event_now
Definer: root@localhost
Time zone: SYSTEM
Type: ONE TIME
Execute at: 2023-03-17 21:34:13
Interval value: NULL
Interval field: NULL
Starts: NULL
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci
1 row in set (0.001 sec)
#任务计划存放在mysql.event表中
MariaDB [testdb]> select * from mysql.event\G;
*************************** 1. row ***************************
db: testdb
name: event_now
body: insert
into events_list values('event_now', now())
definer: root@localhost
execute_at: 2023-03-17 13:34:13
interval_value: NULL
interval_field: NULL
created: 2023-03-17 21:34:13
modified: 2023-03-17 21:34:13
last_executed: NULL
starts: NULL
ends: NULL
status: ENABLED
on_completion: DROP
sql_mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
comment:
originator: 1
time_zone: SYSTEM
character_set_client: utf8
collation_connection: utf8_general_ci
db_collation: latin1_swedish_ci
body_utf8: insert
into events_list values('event_now', now())
1 row in set (0.000 sec)
#开启事件调度功能
MariaDB [testdb]> set global event_scheduler=1;
Query OK, 0 rows affected (0.000 sec)
#事件立即执行 , 每秒插入一条记录
MariaDB [testdb]> select * from events_list;
+------------+---------------------+
| event_name | event_started |
+------------+---------------------+
| event_now | 2023-03-17 21:38:35 |
+------------+---------------------+
1 row in set (0.000 sec)
#事件执行完成后自动删除
MariaDB [testdb]> show events;
Empty set (0.000 sec)范例 : 创建每秒启动的事件
MariaDB [testdb]> CREATE EVENT event_every_second ON SCHEDULE EVERY 1 SECOND
DO INSERT INTO events_list VALUES('event_now', now());
MariaDB [testdb]> show events\G;
*************************** 1. row ***************************
Db: testdb
Name: event_every_second
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: SECOND
Starts: 2023-03-17 21:41:02
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci
1 row in set (0.001 sec)
#事件是存放在mysql.event表中
MariaDB [testdb]> select * from mysql.event\G;
*************************** 1. row ***************************
db: testdb
name: event_every_second
body: INSERT INTO events_list VALUES('event_now', now())
definer: root@localhost
execute_at: NULL
interval_value: 1
interval_field: SECOND
created: 2023-03-17 21:41:02
modified: 2023-03-17 21:41:02
last_executed: 2023-03-17 13:41:39
starts: 2023-03-17 13:41:02
ends: NULL
status: ENABLED
on_completion: DROP
sql_mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
comment:
originator: 1
time_zone: SYSTEM
character_set_client: utf8
collation_connection: utf8_general_ci
db_collation: latin1_swedish_ci
body_utf8: INSERT INTO events_list VALUES('event_now', now())
1 row in set (0.000 sec)
MariaDB [testdb]> select * from events_list;
+------------+---------------------+
| event_name | event_started |
+------------+---------------------+
| event_now | 2023-03-17 21:38:35 |
| event_now | 2023-03-17 21:41:02 |
| event_now | 2023-03-17 21:41:03 |
| event_now | 2023-03-17 21:41:04 |
.......
+------------+---------------------+
20 rows in set (0.000 sec)
MariaDB [testdb]> drop event event_every_second;
Query OK, 0 rows affected (0.000 sec)
MariaDB [testdb]> SHOW EVENTS\G
Empty set (0.001 sec)
MariaDB [testdb]> select *from mysql.event\G
Empty set (0.000 sec)
范例 : 创建每分钟启动的事件
MariaDB [testdb]> show variables like 'event_scheduler';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.001 sec)
MariaDB [testdb]> create event testdb.event_every_minute on schedule every
1 minute do insert into events_list values('event_now', now());
Query OK, 0 rows affected (0.001 sec)
MariaDB [testdb]> select now();
+---------------------+
| now() |
+---------------------+
| 2023-03-18 18:22:39 |
+---------------------+
1 row in set (0.000 sec)
MariaDB [testdb]> select * from events_list;
+------------+---------------------+
| event_name | event_started |
+------------+---------------------+
| event_now | 2023-03-18 18:21:47 |
+------------+---------------------+
1 row in set (0.000 sec)
MariaDB [testdb]> show events\G ;
*************************** 1. row ***************************
Db: testdb
Name: event_every_minute
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2023-03-18 18:19:47
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci
1 row in set (0.001 sec)
MariaDB [testdb]> select * from events_list;
+------------+---------------------+
| event_name | event_started |
+------------+---------------------+
| event_now | 2023-03-18 18:21:47 |
| event_now | 2023-03-18 18:22:47 |
| event_now | 2023-03-18 18:23:47 |
+------------+---------------------+
3 rows in set (0.000 sec)范例 : 创建定时调用存储过程的事件
MariaDB [testdb]> drop event event_every_minute;
Query OK, 0 rows affected (0.000 sec)
MariaDB [testdb]> truncate table events_list;
Query OK, 0 rows affected (0.010 sec)
MariaDB [testdb]> select *from events_list;
Empty set (0.000 sec)
MariaDB [testdb]> delimiter //
MariaDB [testdb]> create procedure sp_insert()
-> begin
-> insert into events_list values('event_now', now());
-> end//
Query OK, 0 rows affected (0.001 sec)
MariaDB [testdb]> delimiter ;
MariaDB [testdb]> CREATE definer=`root`@`localhost` EVENT event_test ON SCHEDULE EVERY 10 SECOND STARTS '2023-03-18 18:33:00' ON COMPLETION PRESERVE ENABLE DO call sp_insert();
Query OK, 0 rows affected (0.001 sec)
MariaDB [testdb]> select now();
+---------------------+
| now() |
+---------------------+
| 2023-03-18 18:36:40 |
+---------------------+
1 row in set (0.000 sec)
MariaDB [testdb]> select * from events_list;
+------------+---------------------+
| event_name | event_started |
+------------+---------------------+
| event_now | 2023-03-18 18:33:00 |
| event_now | 2023-03-18 18:33:10 |
| event_now | 2023-03-18 18:33:20 |
....
| event_now | 2023-03-18 18:36:50 |
+------------+---------------------+
24 rows in set (0.000 sec)范例 : 修改事件
MariaDB [testdb]> ALTER DEFINER=`root`@`localhost` EVENT event_test ON SCHEDULE EVERY 30 SECOND ON COMPLETION PRESERVE ENABLE DO call sp_insert();
Query OK, 0 rows affected (0.000 sec)
MariaDB [testdb]> select * from events_list;
+------------+---------------------+
| event_name | event_started |
+------------+---------------------+
| event_now | 2023-03-18 18:41:20 |
| event_now | 2023-03-18 18:41:50 |
| event_now | 2023-03-18 18:42:20 |
+------------+---------------------+
3 rows in set (0.000 sec)
#禁用事件
MariaDB [testdb]> alter event testdb.event_test disable;
MariaDB [testdb]> show events\G;
*************************** 1. row ***************************
Db: testdb
Name: event_test
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 30
Interval field: SECOND
Starts: 2023-03-18 18:40:20
Ends: NULL
Status: DISABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci
1 row in set (0.001 sec)
MariaDB [testdb]> select now();
+---------------------+
| now() |
+---------------------+
| 2023-03-18 18:46:53 |
+---------------------+
1 row in set (0.000 sec)
MariaDB [testdb]> select * from events_list;
+------------+---------------------+
| event_name | event_started |
+------------+---------------------+
| event_now | 2023-03-18 18:41:20 |
| event_now | 2023-03-18 18:41:50 |
| event_now | 2023-03-18 18:42:20 |
| event_now | 2023-03-18 18:42:50 |
| event_now | 2023-03-18 18:43:20 |
| event_now | 2023-03-18 18:43:50 |
| event_now | 2023-03-18 18:44:20 |
| event_now | 2023-03-18 18:44:50 |
| event_now | 2023-03-18 18:45:20 |
+------------+---------------------+
9 rows in set (0.000 sec)
#启用事件
MariaDB [testdb]> alter event testdb.event_test enable;
Query OK, 0 rows affected (0.000 sec)
MariaDB [testdb]> show events\G;
*************************** 1. row ***************************
Db: testdb
Name: event_test
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 30
Interval field: SECOND
Starts: 2023-03-18 18:40:20
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci
1 row in set (0.001 sec)
MariaDB [testdb]> select * from events_list;
+------------+---------------------+
| event_name | event_started |
+------------+---------------------+
| event_now | 2023-03-18 18:41:20 |
| event_now | 2023-03-18 18:41:50 |
| event_now | 2023-03-18 18:42:20 |
| event_now | 2023-03-18 18:42:50 |
| event_now | 2023-03-18 18:43:20 |
| event_now | 2023-03-18 18:43:50 |
| event_now | 2023-03-18 18:44:20 |
| event_now | 2023-03-18 18:44:50 |
| event_now | 2023-03-18 18:45:20 |
| event_now | 2023-03-18 18:47:50 |
+------------+---------------------+
10 rows in set (0.000 sec)
#修改事件名称
MariaDB [testdb]> alter event testdb.event_test rename to event_test2;
Query OK, 0 rows affected (0.000 sec)
MariaDB [testdb]> show events\G;
*************************** 1. row ***************************
Db: testdb
Name: event_test2
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 30
Interval field: SECOND
Starts: 2023-03-18 18:40:20
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci
1 row in set (0.001 sec)
MariaDB [testdb]> drop event event_test2;
Query OK, 0 rows affected (0.000 sec)
MariaDB [testdb]> show events;
Empty set (0.000 sec)