1.在MySQL中创建一张表,请看下列创建表sql

DROP TABLE IF EXISTS `js_integral_price`;

CREATE TABLE `js_integral_price` (
  `id` bigint(32) unsigned NOT NULL AUTO_INCREMENT,
  `price` decimal(10,3) NOT NULL DEFAULT '0.000',
  `create_time` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=681 DEFAULT CHARSET=utf8mb4 ;

#插入一部分数据
insert  into `js_integral_price`(`id`,`price`,`create_time`) 
values (3,'0.080','2022-10-18'),
(4,'0.090','2022-10-19'),
(5,'0.100','2022-10-20'),
(6,'0.110','2022-10-21'),
(7,'0.120','2022-10-22'),
(8,'0.130','2022-10-23'),
(661,'0.150','2022-10-24'),
(662,'0.180','2022-10-25'),
(663,'0.210','2022-10-26'),
(664,'0.240','2022-10-27'),
(665,'0.250','2022-10-28'),
(666,'0.260','2022-10-29'),
(667,'0.270','2022-10-30'),
(668,'0.300','2022-10-31');

1735286065938.png

2.编写一个MySQL存储过程,从2024年-09-09日起每天想让price在前一天的基础上增加0.1-0.3

DELIMITER $$

USE `aiword`$$

DROP PROCEDURE IF EXISTS `insert_data`$$

CREATE DEFINER=`root`@`%` PROCEDURE `insert_data`()
BEGIN
 DECLARE CURTIME  DATE DEFAULT '2024-09-09';
 
 SELECT NOW() INTO CURTIME;
 
 SELECT price INTO @myprice FROM `js_integral_price` ORDER BY create_time DESC LIMIT 0,1;
 
 # 插入表数据
 INSERT INTO `js_integral_price`(`price`,`create_time`) VALUES (IFNULL(@myprice,0.010) + FLOOR(1 + (RAND() * 3))/100,CURTIME);
 # 存储过程结束
 END$$

DELIMITER ;

weixin_20241227155026.png

3.编写MySQL调用事件,废话少说立即上代码

DELIMITER $$

ALTER DEFINER=`root`@`%` EVENT `insert_data_event` ON SCHEDULE EVERY 1 DAY STARTS '2022-10-20 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
	CALL insert_data();
END$$

DELIMITER ;

4.给MySQL设置mysql事件调度器

SET GLOBAL event_scheduler = ON
SET @@global.event_scheduler = ON
SET GLOBAL event_scheduler = 1; 
SET @@global.event_scheduler = 1; 

 

提醒:虽然这里用set global event_scheduler = on语句开启了事件,但是每次重启电脑。或重启mysql服务后,会发现,事件自动关闭(event_scheduler=OFF),

所以想让事件一直保持开启,最好修改配置文件,让mysql服务启动的时候开启时间,

只需要在my.ini或者my.cnf配置文件的[mysqld]部分加上event_scheduler=ON 即可,如下:

 

关闭事件调度器

通过命令行

可通过如下任何一个命令行

SET GLOBAL event_scheduler = OFF

SET @@global.event_scheduler = OFF
SET GLOBAL event_scheduler = 0; 
SET @@global.event_scheduler = 0; 
 

通过配置文件my.cnf或者my.ini

在[mysqld]下增加

event_scheduler=ON

image.png