如果currentdatetime>触发删除行日期时间+ 5

时间:2014-03-15 14:45:44

标签: mysql sql triggers

我正在创建一个我想创建触发器的数据库。

如果当前时间超过表中的请求时间5分钟,则此触发器将删除一行。

请求时间是表中的日期时间属性。

如何制作触发器?

2 个答案:

答案 0 :(得分:1)

你不想这样做。首先,触发器仅在数据库内发生某些事情时运行(例如插入或更新)。它们与预定作业不同。其次,您通常不希望在预定作业中执行此操作。相反,只需创建一个视图:

create view v_table as
    select t.*
    from table t
    where requesttime >= now() - interval 5 minute;

这将返回有效请求。

然后,在闲暇时,删除旧行 - 如果你真的需要。您很可能想要让他们知道过去发生的事情。但是如果你愿意的话,你可以在星期天早上3点或其他慢的时候删除它们。

答案 1 :(得分:0)

您可能需要考虑在MySQL 5.1.6中添加Event Scheduler。事件可以被视为Cronjob的替代品。

他们的主要优势是:

  1. 平台独立;直接用MySsql编写
  2. 能够列出所有活动SELECT * FROM INFORMATION_SCHEMA.EVENTS;
  3. 内置错误记录选项
  4. 语法类似于:

    CREATE EVENT my_event
    ON SCHEDULE 
        EVERY 1 MINUTE
        STARTS '2015-01-01 00:15:00'
    COMMENT 'Removes forgotten password tokens older thank 1 week.'    
    DO
        DELETE FROM my_table WHERE some_timestamp > NOW();