我在一個存儲用戶出生日期的mysql數據庫中有一個用戶表。根據用戶的出生日期,我在此表中有一個名爲user_level的字段,該字段根據用戶年齡填入1或2,即1表示13歲以下,2表示13歲或以上。在MYSQL中自動更改字段
當用戶生日發生時,是否有辦法將此字段從1動態更改爲2,使其現在變爲13?
我在一個存儲用戶出生日期的mysql數據庫中有一個用戶表。根據用戶的出生日期,我在此表中有一個名爲user_level的字段,該字段根據用戶年齡填入1或2,即1表示13歲以下,2表示13歲或以上。在MYSQL中自動更改字段
當用戶生日發生時,是否有辦法將此字段從1動態更改爲2,使其現在變爲13?
使用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年前生日下降的每個人的用戶級別。
只要服務器正在運行,它是否會每天自行運行,無需任何外部干預? – Maximus2012
是的,它會的。只要啓用調度程序 –
它取決於特定的MySQL版本或類似的東西? – Maximus2012
使用觸發器可能嗎? https://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html – Maximus2012
或者您可能需要某種類型的cron作業或每日腳本來檢查用戶生日,並相應地更新另一列。我不確定這些觸發器是否可以很好地適用於這種情況。 – Maximus2012
是的,我認爲一個觸發器只有在表上發生一個動作時纔有用,即更新或插入。 – Braggart