如何在时间戳字段到期后自动更新MySQL

时间:2013-06-30 06:25:51

标签: mysql time timestamp

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

所以,假设时间戳是2013-06-30 20:10:00,我希望在2013-06-03 20:10:00之后传递日期和时间时自动更新MySQL数据库。

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

我有跟随Query每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());

1 个答案:

答案 0 :(得分:2)

使用可以用于

  1. Mysql events(恕我直言,最佳人选)
  2. cron job或Windows任务计划程序(如果您使用的是Windows平台)
  3. 如果你选择选项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 online_auctions 
       SET auction_status = 'ENDED' 
     WHERE auction_end_date < NOW();
    

    这是 SQLFiddle 演示