コマンドを与える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
列で機能します。(MySQL バージョン 5.6.5 より前では、TIMESTAMP
s でのみ機能しました) s を使用するTIMESTAMP
と、タイム ゾーンが考慮されます。正しく構成されたサーバー マシンでは、これらの値は常に UTC で保存され、取得時に現地時間に変換されます。