1、启动事件机制
代码语言:javascript复制mysql> SHOW VARIABLES LIKE 'event_scheduler';
----------------- -------
| Variable_name | Value |
----------------- -------
| event_scheduler | ON |
----------------- -------
1 row in set (0.00 sec)
mysql>
MySQL 8.0事件机制是默认开启的。
2、准备一张数据表
代码语言:javascript复制mysql> create table test(
-> id int auto_increment primary key,
-> name char(10),
-> dt datetime default CURRENT_TIMESTAMP,
-> ctime timestamp
-> );
Query OK, 0 rows affected (0.01 sec)
3、创建事件
代码语言:javascript复制-- 创建事件,指定事件名
CREATE EVENT IF NOT EXISTS event_demo
-- 每天凌晨1点执行
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
-- 永久执行
ON COMPLETION PRESERVE
-- 事件说明
COMMENT 'T 1的定时任务'
-- 指定事件启动时所要执行的代码
DO
BEGIN
insert into employees.test(name) values('test');
END
代码语言:javascript复制mysql> show events G
*************************** 1. row ***************************
Db: employees
Name: event_demo
Definer: dbadmin@%
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: DAY
Starts: 2021-11-12 01:00:00
Ends: NULL
Status: ENABLED
Originator: 1
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ci
Database Collation: utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql>
3、查询执行结果
两天后,查看定时任务执行结果
代码语言:javascript复制mysql> select * from test;
---- ------ --------------------- -------
| id | name | dt | ctime |
---- ------ --------------------- -------
| 1 | test | 2021-11-11 17:41:16 | NULL |
| 2 | test | 2021-11-12 01:00:00 | NULL |
| 3 | test | 2021-11-13 01:00:00 | NULL |
---- ------ --------------------- -------
3 rows in set (0.00 sec)
mysql> exit
Bye
[root@node1 ~]# date
2021年 11月 13日 星期六 21:33:53 EST
[root@node1 ~]#