一、什么是事件?
一组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
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

