2013-02-14 66 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年))