2015-05-01 75 views
0

我在一個存儲用戶出生日期的mysql數據庫中有一個用戶表。根據用戶的出生日期,我在此表中有一個名爲user_level的字段,該字段根據用戶年齡填入1或2,即1表示13歲以下,2表示13歲或以上。在MYSQL中自動更改字段

當用戶生日發生時,是否有辦法將此字段從1動態更改爲2,使其現在變爲13?

+0

使用觸發器可能嗎? https://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html – Maximus2012

+1

或者您可能需要某種類型的cron作業或每日腳本來檢查用戶生日,並相應地更新另一列。我不確定這些觸發器是否可以很好地適用於這種情況。 – Maximus2012

+0

是的,我認爲一個觸發器只有在表上發生一個動作時纔有用,即更新或插入。 – Braggart

回答

2

使用mysql調度器(只要你的mysql版本是5.1.6+)。

CREATE EVENT birthdayEvent 
    ON SCHEDULE 
    EVERY 1 DAY 
    STARTS '2015-05-01 04:00:00' ON COMPLETION PRESERVE ENABLE 
    DO 
    update user set user_level = 2 where user_birthday = date(now() - interval 13 year); 

確保調度程序已啓用set global event_scheduler = on。然後,這個活動將每天凌晨4點運行,並更新13年前生日下降的每個人的用戶級別。

+0

只要服務器正在運行,它是否會每天自行運行,無需任何外部干預? – Maximus2012

+0

是的,它會的。只要啓用調度程序 –

+0

它取決於特定的MySQL版本或類似的東西? – Maximus2012