一、什么是事件?

 一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,
事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行;

二、查看事件是否开启:SHOW VARIABLES LIKE 'event_scheduler';

开启事件:SET GLOBAL event_scheduler = ON; 
              SET @@global.event_scheduler = ON; 
              SET GLOBAL event_scheduler = 1; 
              SET @@global.event_scheduler = 1; 
      关闭事件:SET GLOBAL event_scheduler = OFF; 
              SET @@global.event_scheduler = OFF; 
              SET GLOBAL event_scheduler = 0; 
              SET @@global.event_scheduler = 0;

三、查看事件

查看当前所在数据库的事件:SHOW EVENTS; SHOW PROCESSLIST; 
查看数据库中所有的事件:SELECT * FROM mysql.event;

四、事件的控制

临时关闭事件
        ALTER EVENT 事件名 DISABLE;
    打开
        ALTER EVENT 事件名 ENABLE;
删除事件
        DROP EVENT 事件名;

五、定时执行事件

DELIMITER $$
/*创建定时事件*/
CREATE EVENT `demo`.`comm` 
/*指定时间执行*/
ON SCHEDULE AT '2021-09-27 16:34:00' 
/*完成时不保留启用  执行完成之后删除事件*/
ON COMPLETION NOT PRESERVE ENABLE 
DO 
	BEGIN
		UPDATE `commodity` SET `c_number` = 1; 
	END$$

DELIMITER ;

六、循环执行事件

DELIMITER $$
/*创建事件*/
CREATE EVENT `demo`.`addmoeny` 
/*循环执行 间隔时间为1天*/
ON SCHEDULE EVERY '1' DAY/*SECOND(秒)*/
/*循环的开始时间*/
STARTS '2021-09-27 00:00:00' 
/*循环的结束时间*/
ENDS '2022-04-29 00:00:00' 
/*完成时不保留启用*/
ON COMPLETION NOT PRESERVE ENABLE 
/*开始*/
DO BEGIN
	UPDATE myuser SET `u_money` = `u_money` + 10;
/*结束*/
END$$

DELIMITER ;

 

 

完成一个抢单系统

要求

用户注册登录
商品定时上架
 不能重复抢购

    

完成会员模块

要求

 会员充值功能
 每天0点检查会员是否到期
 如果到期会员任何特权全部清0


把触发器 视图 事件尽量都用上


  

 

 

最后修改于 2021-09-27 16:40:51
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇