创建删除会话的事件时 SQL 语法错误

Error in SQL syntax when creating event to delete session

我对这个问题的答案中提供的 SQL 代码进行了细微修改:How to delete a MySQL record after a certain time 但是,每次 运行 查询时,我都会收到 "You have an error in your SQL syntax" 错误。

create event delete_session
on schedule at current_timestamp + interval 1 day
on completion preserve
do begin
  delete from session where date < DATE_SUB(NOW(), INTERVAL 7 DAYS);
end;

代码应该创建一个事件以在 7 天后从会话 table 中删除条目,但却给我这个错误。这里的语法真的有问题吗?

您的 CREATE EVENT 命令和 DELETE 命令使用 ; 作为分隔符。因此,您的 CREATE EVENT 命令在 DELETE 命令之后(在 END 之前)结束。您需要在开头设置 DELIMITER 才能在 CREATE EVENT 命令上使用另一个

-- set the DELIMITER to "|"
DELIMITER |

CREATE EVENT delete_session
    ON schedule AT current_timestamp + INTERVAL 1 DAY
    ON COMPLETION PRESERVE
DO BEGIN
    DELETE FROM session WHERE `date` < DATE_SUB(NOW(), INTERVAL 7 DAY);
END |

-- set the DELIMITER back to the default.
DELIMITER ;

...您还需要更改一件事:

  • 删除 DAYS 上的尾随 S