Schedule Event Mysql不接受语法BEGIN END

时间:2013-12-19 16:37:30

标签: mysql sql events syntax mysql-workbench

我一定做过一些非常愚蠢的事,但以下是正确的:

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部分内做多个表,这就是我需要它的原因。

我希望有人能弄清楚这里出了什么问题,我不知所措。 提前致谢, 笑脸

2 个答案:

答案 0 :(得分:7)

您必须将DELIMITER更改为事件正文中未显示的内容。

我刚试过它(MySQL Workbench 6.0.6,MySQL 5.6),它运行正常。这是一个截图:

enter image description here

答案 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 ;