Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为什么';更新当前时间戳时';不';更新相同数据时是否更新?_Mysql_Database_Timestamp_Sql Update - Fatal编程技术网

Mysql 为什么';更新当前时间戳时';不';更新相同数据时是否更新?

Mysql 为什么';更新当前时间戳时';不';更新相同数据时是否更新?,mysql,database,timestamp,sql-update,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

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

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)并由上次相同的用户编辑时,更改的\u不会更新


当我用相同的数据更新由创建的时,为什么字段发生了变化

这种行为是故意的。onUpdate CURRENT_TIMESTAMP字段在字段值更改时更新,而不是在字段保持不变时更新

为了达到你似乎想要的,你可以这样做

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

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

从Mysql站点

如果列是自动更新的,则当行中任何其他列的值从其当前值更改时,该列将自动更新为当前时间戳<代码>如果所有其他列都设置为其当前值,则该列保持不变。要防止列在其他列更改时更新,请显式将其设置为当前值

解决方案

要在其他列未更改的情况下更新该列,请显式将其设置为应有的值(例如,将其设置为当前\u时间戳)。


Thx这是解决方案:)