2016-05-17 18 views
2

我需要删除+更新的一个MySQL的sheduler事件MySQL的sheduler查询

查询:

DELETE FROM access WHERE d > 0; 
UPDATE access SET d = 1 WHERE d = 0; 

如何在一个MySQL的事件他们结合?

+0

您是否创建了任何活动?你希望事件的安排有多频繁? – 1000111

+0

检查:[14.1.12 CREATE EVENT语法](https://dev.mysql.com/doc/refman/5.7/en/create-event.html)。 – wchiquito

回答

0
  • 首先设置event_schedulerON
SET GLOBAL event_scheduler = ON; 
  • 现在创建事件(该事件将被调度在5分钟 间隔)
DROP EVENT IF EXISTS `deleteUpdateEvent`; 
delimiter $$ 

CREATE EVENT `deleteUpdateEvent` ON SCHEDULE EVERY 5 MINUTE STARTS '2016-05-17 00:00:00' 
ON COMPLETION PRESERVE ENABLE 
DO 
BEGIN 
    DELETE FROM access WHERE d > 0; 
    UPDATE access SET d = 1 WHERE d = 0; 

END$$ 
delimiter; 

示例:

假设你有你的access表中的下列数据:

id d 
1 66 
2 71 
3 -6 
4 -7 
5 0 

当活动结束它的执行(先运行)您的访问表看起来象下面这样:

id d 
3 -6 
4 -7 
5 1 

第二次运行后:

次访问表:

id d 
3 -6 
4 -7 

注:

对于后续运行你的表不会改变,除非你有>= 0

0

你可以尝试这样的新的数据:

DELIMITER $$ 
CREATE EVENT `myEvent` 
    ON SCHEDULE EVERY 1 MINUTE STARTS 'yourStartTime' 
    ON COMPLETION NOT PRESERVE ENABLE 
    DO 
     BEGIN 
      DELETE FROM access WHERE d > 0; 

      UPDATE access 
      SET  d = 1 
      WHERE d = 0; 
     END $$ 
DELIMITER ;