我一定做过一些非常愚蠢的事,但以下是正确的:
CREATE EVENT delete_old
ON SCHEDULE
EVERY 1 DAY
COMMENT 'Clears old cache data from the DB.'
DO
DELETE FROM summoners
WHERE `date` < (NOW() - INTERVAL 7 DAY);
下一位似乎在最后两行引发语法错误:
CREATE EVENT delete_old
ON SCHEDULE
EVERY 1 DAY
COMMENT 'Clears old cache data from the DB.'
DO BEGIN
DELETE FROM summoners
WHERE `date` < (NOW() - INTERVAL 7 DAY);
END;
据我所知,语法是正确的,但MySQL Workbench不同意。我打算在BEGIN - END部分内做多个表,这就是我需要它的原因。
我希望有人能弄清楚这里出了什么问题,我不知所措。 提前致谢, 笑脸
答案 0 :(得分:7)
您必须将DELIMITER
更改为事件正文中未显示的内容。
我刚试过它(MySQL Workbench 6.0.6,MySQL 5.6),它运行正常。这是一个截图:
答案 1 :(得分:2)
这是因为身体中的;
在中间打破了你的命令。使用不同的分隔符。
DELIMITER |
CREATE EVENT delete_old
ON SCHEDULE
EVERY 1 DAY
COMMENT 'Clears old cache data from the DB.'
DO BEGIN
DELETE FROM summoners
WHERE `date` < (NOW() - INTERVAL 7 DAY);
END;
| DELIMITER ;