Hi Lance:
你可以看一下資料結構, plog_articles.date 他的預設值(缺省)是 current time stamp ,意思就是當你在 update 這一筆資料時,如果你不指定給 date 任何值,那麼他就會以現在的時間來當作這個欄位的時間。
我們以一個實例來看:
1. 假設有一篇文章 (id =2, 時間是 2005-09-18 12:01:47),那麼當我點下這篇文章, pLog 幫他 update 閱讀次數,他的實際 sql 如下:
UPDATE plog_articles SET num_reads = num_reads+1, date = date WHERE id = 2
所以這一個 sql 執行後 date 還是 2005-09-18 12:01:47,而 num_reads 會加 1。
2. 好,那麼我們把 sql 改為:
UPDATE plog_articles SET num_reads = num_reads+1 WHERE id = 2
你會發現sql 執行後,不僅 num_reads 會加 1,而且 date 被改變了。
這就是為什麼 sql 中要加入 (new time stamp) date = (old time stamp) date 的理由了。 因為希望文章的建立日期不要在 update num_reads 被改變。
下次遇到這樣的狀況,可以先把他變成是實際的程式來試試看。光用看的,有時會很難理解的。
Mark