为什么"更新CURRENT_TIMESTAMP"在更新相同数据时不会更新?

Ger*_*mer 4 mysql database timestamp sql-update

当我有一个包含以下数据的表格时:

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
Run Code Online (Sandbox Code Playgroud)

我有以下查询:

mysql_query('
  UPDATE table 
  SET created_by = 4 
  WHERE statementID=8');
Run Code Online (Sandbox Code Playgroud)

当我编辑语句信息(其他tbl)并且它由上次与同一用户编辑时,changed_when不会更新.

changed_when当我created_by使用相同的数据更新时,为什么字段不会改变?

cja*_*cja 7

此行为是设计使然.onUpdate CURRENT_TIMESTAMP字段在字段值更改时更新,而不是在它们保持不变时更新.

为了实现你想要的东西,你可以做到

UPDATE table 
SET created_by = 4,
changed_when = null,
WHERE statementID = 8
Run Code Online (Sandbox Code Playgroud)


Meh*_*zad 6

如果在任何更新语句中,如果值保持不变,则不会更新时间戳值.

来自Mysql SITE

如果该列是自动更新的,则当该行中任何其他列的值从其当前值更改时,它将自动更新为当前时间戳.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).

参考