はSHOW CREATE TABLE whatever
が続いてテーブル定義を見てコマンドを与えます。
それはおそらくそれでこの
logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
のような行があります。 DEFAULT CURRENT_TIMESTAMP
は、明示的なタイムスタンプ設定のないINSERT
には現在時刻を使用することを意味します。同様に、ON UPDATE CURRENT_TIMESTAMP
は、明示的なタイムスタンプのない更新が、現在のタイムスタンプ値の更新をもたらすことを意味します。
テーブルを作成するときに、この既定の動作を制御できます。
最初にタイムスタンプ列が正しく作成されなかった場合は、変更することができます。
ALTER TABLE whatevertable
CHANGE whatevercolumn
whatevercolumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
これにより、表のINSERTおよびUPDATE操作が自動的にタイムスタンプ列を更新します。あなたはタイムスタンプを変更することなく、whatevertable
を更新したい場合は、それが他の列が
を変更したときに更新するから列を防ぐために、
であるあなたは、更新のこの種を発行する必要があります。
UPDATE whatevertable
SET something = 'newvalue',
whatevercolumn = whatevercolumn
WHERE someindex = 'indexvalue'
そして、これはTIMESTAMP
列だけでなく、DATETIME
またはDATE
列で動作します。列がTIMESTAMP
であるため、タイムゾーンが考慮されます。正しく構成されたサーバーマシンでは、これらの値は常にUTCで保存され、取得時にローカル時間に変換されます。新しい人々のために、これは混乱であるため、UPDATE CURRENT_TIMESTAMP
を見つけるために追加
なぜ、あなたは 'test'テーブルを作成してサンプルデータを更新してこれを試していませんか?ところで、updateの 'timestamp'型の列は更新されません。 これはカラム定義 'ON UPDATE CURRENT_TIMESTAMP'に追加されていない場合 –