2013-02-14 67 views
0

删除表中的数据以下字段:id, date, user_id, city, priceCakePHP的汽车从MySQL

我想是超过1年被automaticaly删除的行,但我真的不知道如何做到这一点。应该通过应用程序还是数据库来完成?怎么样?

这里的另一个问题是每年将会有大约5万个插入。 'id'字段在几年后会发生什么?这个数字不会太大吗?在这种情况下可以做些什么?

非常感谢提前。

回答

3

我会建议creating a basic shell处理删除记录,并安排一个cron作业,每当你想检查应该删除的记录时运行。外壳可能很简单,如下所示:

class JanitorShell extends AppShell { 
    // put the model you wish to delete from here 
    public $uses = array('Model'); 

    public function main() { 
     $this->Model->deleteAll(array(
      'Model.created <' => date('Y-m-d', '-1 year') 
     )); 
     $this->out('Records deleted.'); 
    } 
} 

然后你的cron作业会运行你的shell。要运行你的shell,请致电:

cake -app /path/to/app janitor 

这是假设cake是在路径中。当然,这是一个非常基本的shell,可以很容易地扩展,保留已删除内容的日志,甚至可以将删除的记录移动到新表中,这是一种“软删除”。您应该不会在main()中放置这样的破坏性代码,因为它每次运行shell时都会运行,但这会让您开始。

要回答你的第二个问题,50k插入一年是不值得担心的。要知道主键的限制,请阅读MySQL数据类型。

0

其实我觉得应该是

日期( 'Y-M-d' 的strtotime(“ - 1年))