创建删除会话的事件时 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
。
我对这个问题的答案中提供的 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
。