我正在尝试在MySQL(我的第一次)中创建一个事件,该事件将删除“报告”表中超过3个月的所有记录。
该活动应该每天凌晨3:00开始。报告表的字段为“已创建”,类型为DATETIME。
这是我为创建活动而提出的代码:
CREATE
EVENT `delete_reports`
ON SCHEDULE
EVERY 3 DAY_HOUR
DO BEGIN
DELETE FROM `reports` WHERE `created` < DATE_SUB(NOW(), INTERVAL 3 MONTH)
但是这会引发以下错误:
#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第6行的''附近使用正确的语法
我理解1064错误是指语法问题,但在查找了几个不同的示例后,我仍未设法让它工作。
任何建议都会非常感激!
答案 0 :(得分:0)
你错过了END
,你应该更改分隔符。或者省略BEGIN
。
所以,就像这样:
DELIMITER $$
CREATE EVENT `delete_reports`
ON SCHEDULE
EVERY 3 DAY_HOUR
DO BEGIN
DELETE FROM `reports` WHERE `created` < DATE_SUB(NOW(), INTERVAL 3 MONTH);
END $$
DELIMITER ;
或者像这样:
CREATE EVENT `delete_reports`
ON SCHEDULE
EVERY 3 DAY_HOUR
DO
DELETE FROM `reports` WHERE `created` < DATE_SUB(NOW(), INTERVAL 3 MONTH);