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