【问题标题】:How to AUTO update MySQL after timestamp field expierd时间戳字段过期后如何自动更新 SQL
【发布时间】:2013-06-27 14:09:58
【问题描述】:

如何在过期时间戳时自动执行 MySQL 更新或插入?

假设时间戳是 2013-06-30 20:10:00,我想在经过该日期和时间后自动更新 MySQL 数据库,所以今天在 2013-06-03 20:10:00 之后。

我想更新我的项目,但我的网站无法打开浏览器,所以我想我需要某种服务器触发器??我怎么做?非常感谢

我有以下查询每 1 秒执行一次,但它不起作用:

CREATE EVENT e_second
    ON SCHEDULE
      EVERY 1 SECOND
    DO
UPDATE online_auctions.auction_status
   SET auction_status = 'ENDED' WHERE TIMESTAMP(auction_end_date) < (select now());

【问题讨论】:

    标签: mysql time timestamp


    【解决方案1】:

    使用可以用于那个

    1. Mysql events(恕我直言,最佳人选)
    2. cron 作业或 Windows 任务计划程序(如果您在 Windows 平台上)

    如果您选择选项 1,则需要创建一个事件

    CREATE EVENT myevent 
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO 
    UPDATE myschema.mytable 
       SET mycol = mycol + 1;
    

    使用SHOW PROCESSLIST 检查是否启用了事件调度程序。如果是ON,您应该会看到用户“event_scheduler”的进程“守护进程”。如果当前未启用调度程序,请使用 SET GLOBAL event_scheduler = ON; 启用调度程序。更多关于配置事件调度器here

    如果您想查看架构中的事件

    SHOW EVENTS;
    

    UPDATE你的更新语句应该是这样的

    UPDATE online_auctions 
       SET auction_status = 'ENDED' 
     WHERE auction_end_date < NOW();
    

    这里是SQLFiddle演示

    【讨论】:

    • 谢谢,但是如何执行呢?可以这样说:在 CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO UPDATE myschema.mytable SET mycol = mycol + 1;
    • 就像普通的 MySQL 查询一样?请指教
    • MySql 事件调度程序将在您创建事件时指定的时间或时间间隔为您执行它
    • 酷,但是我在哪里可以得到这个调度器??
    猜你喜欢
    • 2011-08-10
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多