2
我需要删除+更新的一个MySQL的sheduler事件MySQL的sheduler查询
查询:
DELETE FROM access WHERE d > 0;
UPDATE access SET d = 1 WHERE d = 0;
如何在一个MySQL的事件他们结合?
我需要删除+更新的一个MySQL的sheduler事件MySQL的sheduler查询
查询:
DELETE FROM access WHERE d > 0;
UPDATE access SET d = 1 WHERE d = 0;
如何在一个MySQL的事件他们结合?
- 首先设置
event_scheduler
ON
。
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
值
你可以尝试这样的新的数据:
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 ;
您是否创建了任何活动?你希望事件的安排有多频繁? – 1000111
检查:[14.1.12 CREATE EVENT语法](https://dev.mysql.com/doc/refman/5.7/en/create-event.html)。 – wchiquito