MySQL触发器,在不活动后删除一行?

时间:2012-04-25 11:38:07

标签: mysql sql triggers

我已经完成了一些谷歌搜索,但无法获得更多相关信息。我正在尝试根据活动设置某些行的日期/时间。如果激活,除非再次激活,否则时间将被激活到更晚的时间。否则它将被删除。我已经设法在活动中激活(插入/更新)时对行进行排序。

提前致谢。

2 个答案:

答案 0 :(得分:3)

首先,如果您需要删除数百万行,则不要将此更新/删除置于触发器中,您将看到插入/更新的巨大性能损失。它不是最好的地方。您可以像Filype建议的那样创建一个cron作业。或者如果你想在MySQL中保留所有内容,请使用MySQL事件调度程序。

转到此页面以阅读有关在MySQL中安排事件的更多信息: http://dev.mysql.com/doc/refman/5.1/en/events.html

MySQL Event允许您定期在MySQL上安排事情。

代码看起来像

 CREATE EVENT myevent
 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
 DO
  DELETE FROM MyTable Where Expired< NOW();

答案 1 :(得分:0)

这是一个建议,我还没有尝试过,您可能会考虑使用deleted = 1更新行,而不是实际删除记录。

CREATE TRIGGER deleteInactiveRecords AFTER UPDATE,INSERT ON myTable
    FOR EACH ROW BEGIN
        DELETE FROM myTable WHERE updated < (updated-((60)*60*24))
    END;