1

この方法でレコードを入力するとしましょう

"insert into table (value,time) VALUES ('4',NOW())"

そして、これが値を更新する方法です

"update table set value = '5' WHERE id = '1'"

問題は、最後のクエリで時間の値が current_timestamp で再度更新されるため、時間が間違っていることです。

どうすればこれを防ぐことができますか? (時間の値を、更新ではなく挿入時に current_timestamp のままにしておきたい)

PD: sqlBuddy を使用して行から値 CURRENT_TIMESTAMP を削除しようとしましたが、変更が保存されていない場合のように、再度適用されます..

4

4 に答える 4

10

次のように、更新クエリにフィールドの現在の値を追加するだけです。

update table set value = '5', timestamp_value = timestamp_value WHERE id = '1'
于 2012-08-31T19:32:52.867 に答える
0

フィールドを CURRENT_TIMESTAMP のデフォルト値を持つ DateTime フィールドにするだけです。そのため、新しいレコードの作成時に設定されますが、必要な場合にのみ更新されます。

于 2012-08-31T19:25:43.390 に答える
0

デフォルト値をに設定する必要がありますCURRENT_TIMESTAMP

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

これで痛みが和らぐはずです。

于 2012-08-31T19:25:57.497 に答える