【问题标题】:Unable to schedule an Event in MySQL无法在 MySQL 中安排事件
【发布时间】:2020-11-23 10:32:33
【问题描述】:

我正在尝试添加一个每天都会触发的预定事件并根据日期删除一行。 这是我的代码。但它显示语法错误。

CREATE EVENT IF NOT EXISTS `test_db`.`delete_expiredevents`
ON SCHEDULE
EVERY 1 DAY 
COMMENT 'Delete all Expired events in verify_email table'
DO

BEGIN
DECLARE dt TIMESTAMP(1);
DECLARE dtn TIMESTAMP(1);
SELECT v_requested_on 
INTO dt 
FROM verify_email 
ORDER BY id DESC LIMIT 1;  
dtn = DATE_ADD(dt , INTERVAL 15 DAY);
DELETE FROM verify_email WHERE v_expire_on >=dtn;
END

另外,如何在 MySQL 工作台中启用Events

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您需要先更改分隔符。否则,您的命令将在第一个 ; 处被切断,这将使其不完整

    delimiter |    
    CREATE EVENT IF NOT EXISTS `test_db`.`delete_expiredevents`
    ON SCHEDULE EVERY 1 DAY 
    COMMENT 'Delete all Expired events in verify_email table'
    DO
    BEGIN
       DECLARE dt TIMESTAMP(1);
       DECLARE dtn TIMESTAMP(1);
       SELECT v_requested_on 
       INTO dt 
       FROM verify_email 
       ORDER BY id DESC LIMIT 1;  
       set dtn = DATE_ADD(dt , INTERVAL 15 DAY);
       DELETE FROM verify_email WHERE v_expire_on >= dtn;
    END |
    delimiter ;
    

    分配给变量时也使用set

    Workbench 中也没有事件 GUI。您必须使用命令来配置事件。

    【讨论】:

    • 如何启用和查看 MySQL Workbench 中的事件?
    • 顺便说一句,我可以像备份表和存储过程一样备份events 吗?
    • 您可以启用和禁用事件。要备份事件,您只需将创建代码保存在某处即可。
    猜你喜欢
    • 1970-01-01
    • 2013-01-30
    • 2012-07-13
    • 2021-05-06
    • 2021-07-07
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    相关资源
    最近更新 更多