4

次のデータを含むテーブルがある場合:

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');

ステートメント info(other tbl) を編集し、前回と同じユーザーが編集すると、 changed_when が更新されません。

同じデータで changed_when更新してもフィールドが変わらないのはなぜですか?created_by

4

2 に答える 2

8

この動作は仕様です。onUpdate CURRENT_TIMESTAMP フィールドは、フィールドの値が同じままである場合ではなく、変更された場合に更新されます。

あなたが望むと思われるものを達成するために、あなたはできる

UPDATE table 
SET created_by = 4,
changed_when = null,
WHERE statementID = 8
于 2013-02-26T11:40:05.617 に答える
6

いずれかの更新ステートメントで値が同じままである場合、タイムスタンプ値は更新されません。

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).

参照

于 2013-02-26T11:40:59.033 に答える