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');

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 ;

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
