【问题标题】:Schedule Event in MySQL在 MySQL 中安排事件
【发布时间】:2014-12-03 03:29:06
【问题描述】:

我一直试图找到这个答案很长一段时间都无济于事。这是我必须做的。我在下面的table 中创建了第一条记录。然后我想安排一个每周重复一次的事件,以便在这个table 中插入一条新记录。我需要做的就是这个事件每周一次从table 的最后一行的字段中添加一周。

首选输出(类似这样)

+----+------------+------------+
| id |   start    |    end     |
+----+------------+------------+
|  1 | 2014-12-04 | 2014-12-11 | <-- Manually Inputed (base dates)
|  2 | 2014-12-11 | 2014-12-18 | <-- SQL Scheduled Events below
|  3 | 2014-12-18 | 2014-12-25 | (Every Thursday :D)
|  4 | 2014-12-25 | 2015-01-01 |
+----+------------+------------+

到目前为止的SQL语句

INSERT INTO `publication_dates` (`id`, `Start`, `End`) VALUES (null,"2014-12-04", DATE_ADD("2014-12-04",INTERVAL +1 WEEK));

我没有为此创建一个事件,因为我根本不知道如何从它之前的行中获取信息。这将帮助我克服我在 laravel 项目中遇到的障碍。

提前感谢您的宝贵时间!

MySQL 系统税错误

DELIMITER &&
CREATE EVENT new_publication
ON SCHEDULE EVERY 1 WEEK STARTS '2014-12-04 00:00:00'
DO BEGIN

INSERT INTO publication_dates (`Start`, `End`) 
VALUES (NOW(), DATE_ADD(NOW(), INTERVAL 7 DAY));

END &&

【问题讨论】:

    标签: mysql scheduled-tasks scheduler


    【解决方案1】:

    如果您让第一行也由事件创建,您可以使用mysql event scheduler 实现此目的。

    在您想输入的第一个日期开始活动。并且该事件应该运行下面的插入查询。

    INSERT INTO publication_dates (`start`, `end`) 
    VALUES (NOW(), DATE_ADD(NOW(), INTERVAL 7 DAY));
    

    要使事件起作用,您需要启动 mysql 实例并启用事件调度程序,或者您可以通过运行以下查询将其打开:

    SET GLOBAL event_scheduler = ON;
    

    然后您必须创建一个每周四(例如午夜)运行的活动。

    DELIMITER &&
    CREATE EVENT run_on_thursdays
    ON SCHEDULE EVERY 1 WEEK STARTS <starting thursday> ENDS <ending thursday>
    do begin
    
    <the insert query from above>
    
    END &&
    

    这将输入第一个值,并在每个星期四继续添加一行,直到星期四结束。

    【讨论】:

    • 哇,谢谢,我会试一试,但它绝对有见地。 +1 了
    • 说我的第一部分代码有语法错误
    • 对不起,我缺少一个支架,现在修复它。
    • 嘿 Haleeem 我收到语法错误。我在我的问题中发布了代码。感谢您的帮助
    • 嗯,我刚刚运行了我的代码版本,用星期代替了分钟,它工作得很好。插入查询是否独立工作?
    猜你喜欢
    • 2013-01-30
    • 1970-01-01
    • 2012-07-13
    • 2021-05-06
    • 2021-07-07
    • 2013-01-26
    • 1970-01-01
    • 2014-01-08
    • 2020-06-30
    相关资源
    最近更新 更多