2011-10-04 92 views
0

我對此有幾個字段,包括表MySQL數據庫:如何更新MYSQL數據庫字段數據自動

enter_date(這是一個時間戳字段 - 即2011-09-13 21點04分42秒) 狀態(默認爲有效) period_allowed(這是數天即5或20或30等)

現在我需要做的是在period_allowed後(從enter_date場首發)的狀態是從「活動」變爲「過期」。

即 如果輸入日期:2011-09-10- 12:00:00 period_allowed:5

然後在9月15日的狀態是從 '積極的' 自動更改爲 '已過期'

想法爲最佳和最簡單的方法來做到這一點?

謝謝

P.S.看着建立一個cron工作..但編碼來實現這一目標?

回答

2

您可以創建一個存儲過程來執行此更新SQL,並創建一個定期運行該存儲過程的MySQL事件(如果使用最新版本的MySQL)。否則,使用mysql命令行客戶端創建一個調用存儲過程的cron作業(或僅運行update sql)。

UPDATE my_table SET status='expired' WHERE NOW() >= ADDDATE(enter_date, period_allowed) 

請參閱MySQL 5.1 Create Event文檔,它有一個創建運行更新語句的事件的簡單示例。或者,要創建一個cron作業,可以在crontab中創建一個條目,使用-e標誌調用mysql來執行語句。

+0

嗯..現在在看看在這之前..不使用事件.. – user718359

+0

我使用的Web主機不支持事件..他們建議作爲使用cron的工作.. – user718359

+0

請參閱http://adminschoice.com/crontab-quick-reference – imm

3

我還沒有使用它,但Mysql的活動似乎是做到這一點的方式,

Mysql Events

+0

謝謝你現在看看活動.. – user718359

0

嗨,你可以使用MySQL事件或更新後的1天或刪除數據或更新數據2天我準備一個PHP腳本,那就是:

$insertquery="CREATE EVENT JOY // joy is event name 
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 MINUTE //after 3 minute the event will run automatically 
    DO 
     BEGIN 
     insert into tbl2 (col1, col2, col3) select col1,col2,col3 from course_entry where username = ''; //this is mysql job event should do copy data from tbl1 to tbl2 

delete from course_entry where username = '';// 2nd mysql job it will delete tbl1 data after insert process is done 
     END"; 

mysql_query($insertquery) or die (mysql_error()); 

希望它會爲你工作

相關問題