时间:2021-07-01 10:21:17 帮助过:11人阅读
首先通过Navicat for MySQL查看Event事件是否开启,具体代码:
show variables like ‘%sche%‘;通常事件是开启的,如下图所示:
如果没有开启,需要数据库超级权限设置。
set global event_scheduler =1;其中event_scheduler为ON表示开启,OFF表示关闭,如下:
CREATE EVENT testevent ON SCHEDULE EVERY 1 DAY STARTS ‘2017-03-09 23:50:00‘ DO delete from loginuser where Username=‘eastmount‘;创建事件可以查看到的,如下图所示:
        点开事件如下图所示,但我更推荐大家写SQL语句。
        在使用事件Event中,需要开启和关闭事件,使用的代码如下:
        关闭事件:ALTER EVENT testevent DISABLE;
        开启事件:ALTER EVENT testevent ENABLE;
        查看事件是否开启的代码如下:
SELECT * FROM mysql.event;输出如下图所示:
CREATE EVENT insertevent
    ON SCHEDULE EVERY 10 SECOND 
    DO
				INSERT INTO logininfo(NAME,STARTTIME,STATE) values(‘test01‘,now(),‘1‘);        运行结果如下图所示:        假设现在有一个报警系统,当用户进入房间开始计时,当用户在放在中待了2小时就开始报警,设置状态。数据如下:
select current_timestamp, starttime, timestampdiff(SECOND,starttime,current_timestamp) as T from logininfo;输出结果如下图所示,每隔10秒会插入一个数据,所以不断更新。
        现在的更新UPDATE的语句如下所示:
CREATE EVENT updateevent
    ON SCHEDULE EVERY 10 SECOND 
    DO
				update logininfo set STATE=0 WHERE 
					timestampdiff(SECOND,starttime,current_timestamp)>300 and STATE=1;        然后查询实时更新状态的SQL语句如下:select ID, STATE, current_timestamp, starttime, timestampdiff(SECOND,starttime,current_timestamp) as T from logininfo;输出如下图所示,发现302可能是查过300秒,可能实时更新的延误,但不影响效果的。
        讲到这里,一个简单预警系统的数据库就设置完成,总共我们设置了3个事件,如下图所示:
        补充一段代码:
delimiter //
CREATE EVENT e
ON SCHEDULE
    EVERY 5 SECOND
DO
BEGIN
    DECLARE v INTEGER;
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
    SET v = 0;
    WHILE v < 5 DO
        INSERT INTO t1 VALUES (0);    
        UPDATE t2 SET s1 = s1 + 1;
        SET v = v + 1;
    END WHILE;
END //
delimiter ;[数据库] Navicat for MySQL事件Event实现数据每日定期操作
标签:into stat 语句 状态 创建 and while 改变 center