zl程序教程

您现在的位置是:首页 >  其他

当前栏目

MySQL 8.0 定时任务(事件)验证

2023-03-14 22:47:52 时间

1、启动事件机制

mysql> SHOW VARIABLES LIKE 'event_scheduler';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> 

MySQL 8.0事件机制是默认开启的。

2、准备一张数据表

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、创建事件

-- 创建事件,指定事件名
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
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、查询执行结果

两天后,查看定时任务执行结果

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 ~]#