09-27MySQL事件

一、什么是事件?

 一组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 ;

 抢单系统所用事件

DELIMITER $$

ALTER DEFINER=`root`@`localhost` EVENT `productdateshelt` 
ON SCHEDULE EVERY 1 SECOND 
STARTS '2021-10-07 19:44:54' 
ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
	    UPDATE `product` SET `p_buy` = 1 WHERE TIMESTAMPDIFF(SECOND,`p_create_date`,NOW())>=0;
	END$$

DELIMITER ;

每秒调用事件,执行SQL语句,当前时间与上架时间相同时修改字段,实现商品上架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值