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使用相同的数据更新时,为什么字段不会改变?
此行为是设计使然.onUpdate CURRENT_TIMESTAMP字段在字段值更改时更新,而不是在它们保持不变时更新.
为了实现你想要的东西,你可以做到
UPDATE table
SET created_by = 4,
changed_when = null,
WHERE statementID = 8
Run Code Online (Sandbox Code Playgroud)
如果在任何更新语句中,如果值保持不变,则不会更新时间戳值.
来自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).
| 归档时间: |
|
| 查看次数: |
3409 次 |
| 最近记录: |