2013-02-26 163 views
3

當我有下列數據的表:爲何'更新CURRENT_TIMESTAMP'在相同數據更新時不更新?

StatementID(int AI) | created_by(int) | changed_when(onUpdate CURRENT_TIMESTAMP) 
-------------------------------------------------------------------------------- 
7     | 4    | 2013-02-26 12:05:57 
8     | 4    | 2013-02-26 12:20:12 

我有以下查詢:

mysql_query(' 
    UPDATE table 
    SET created_by = 4 
    WHERE statementID=8'); 

當我編輯的聲明信息(其它TBL),它是由同一個用戶編輯作爲最後一次,changed_when不會更新。

爲什麼當我使用相同的數據更新created_by時,字段changed_when不會改變?

回答

5

此行爲是設計使然。 onUpdate CURRENT_TIMESTAMP字段在字段值更改時進行更新,而不是在它們保持不變時更新。

要實現你彷彿想,你可以做

UPDATE table 
SET created_by = 4, 
changed_when = null, 
WHERE statementID = 8 
+0

THX這是解決方案:) – 2013-02-26 12:25:43

5

如果在任何更新語句,如果值保持相同,則時間戳值不會被更新。

從MySQL站點

如果列是自動更新的,當行中的任何其他列的值從當前值改變了它會自動更新爲當前時間戳。 The column remains unchanged if all other columns are set to their current values。要防止其他列更改時更新列,請明確將其設置爲其當前值。

To update the column even when other columns do not change, explicitly set it to the value it should have (for example, set it to CURRENT_TIMESTAMP).

Refer