对不起,对这些东西真的不太了解!
我有一个包含几列的表,其中一列称为'expirationday',每行都有此列的unix时间戳。
我想知道,如果可能的话,当达到'expirationday'列(针对该行)的时间时如何删除行。
请注意,它不需要准确地删除行到秒,几个小时就可以了。
答案 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 ;
答案 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