SQL:如何在达到unix时间时删除一行?

时间:2015-03-02 07:28:08

标签: mysql sql unix row

对不起,对这些东西真的不太了解!

我有一个包含几列的表,其中一列称为'expirationday',每行都有此列的unix时间戳。

我想知道,如果可能的话,当达到'expirationday'列(针对该行)的时间时如何删除行。

请注意,它不需要准确地删除行到秒,几个小时就可以了。

2 个答案:

答案 0 :(得分:0)

值得关注MySQL event scheduler。您可以安排一份工作,例如每半小时运行一次。

然后可以直接调用DELETE语句或调用MySQL Function or Procedure

DELIMITER $$

CREATE 
    EVENT `deleteExpire` 
    ON SCHEDULE EVERY 1 HOUR STARTS '2015-01-01 00:00:00' 
    DO BEGIN

        DELETE FROM mytable
              WHERE expirationday < UNIX_TIMESTAMP();

    END */$$

DELIMITER ;

另见more example usage

答案 1 :(得分:0)

script.sh

像这样创建一个shell脚本:

#!/bin/bash

mysql --user=[username] --password=[password] --database=[db name] --execute="DELETE FROM tbl_name WHERE expiration_date < NOW()

创建一个执行(它将每30分钟运行一次)的cron作业

crontab -e

添加:

0,30 * * * * /path/script.sh