[解決済み] タイムスタンプ(自動)はいつ更新されるのですか?
質問
テーブルのカラムが
TIMESTAMP
型のテーブルにカラムがあり、デフォルトで CURRENT_TIMESTAMP の値を更新すると、このカラムは現在のタイムスタンプに更新されるのでしょうか?
の値を更新した場合、このカラムは現在のタイムスタンプに更新されるのでしょうか?
の値を更新した場合、このカラムは現在のタイムスタンプに更新されますか?
の値を更新した場合、このカラムは現在のタイムスタンプに更新されますか?
しないようなのですが、こうなるべきなのかよくわかりません。
これが何を意味するのか理解できません(
MySQL ドキュメントから
):
カラムが自動更新の場合、行の他のカラムの値が更新されると、自動的に現在のタイムスタンプに更新されます。 行の他のカラムの値が現在の値から変更されると、自動的に現在のタイムスタンプに更新されます。 現在の値から変更された場合、自動的に現在のタイムスタンプに更新されます。他のすべてのカラムが現在の値に設定されている場合、カラムは変更されないままです。 他のカラムが現在の値に設定されている場合、カラムは変更されません。他のカラムが変更されたときにカラム 他のカラムが変更されたときにカラムが更新されないようにするには、明示的にそのカラムを現在の値に設定します。 を現在の値に設定します。他のカラムが変更されない場合でも、カラムを更新するには 明示的にそのカラムが持つべき値を設定します。] 2
どのように解決するのですか?
コマンド
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
のみ動作しました。
TIMESTAMP
正しく設定されたサーバマシンでは、これらの値は常に UTC で保存され、取得時にローカルタイムに変換されます。
関連
-
MySQLインデックスベースストレステストの実装
-
MySQLインストールチュートリアル(Linux版
-
[解決済み] 1つのSQLクエリで複数のカウントを取得する方法は?
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] Git で古いコミットのタイムスタンプを変更するにはどうしたらいいですか?
-
[解決済み] 各グループの上位1行を取得
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] 文字列の一部をUPDATEおよびREPLACEする。
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQL Innodb インデックスメカニズム詳細解説
-
SQL集計、グループ化、ソート
-
SQL基本クエリステートメント
-
MySQLインストールチュートリアル(Windows用)詳細
-
mysqlのデータ圧縮性能比較 詳細
-
MySQLインストールチュートリアル(Linux版
-
[解決済み】MySQL - オペランドは1つのカラムを含む必要があります。
-
[解決済み】文字列からuniqueidentifierに変換する際に変換に失敗する - 2つのGUIDの場合
-
SQLステートメントエラーです。オペランドには 1 つのカラムを含める必要があります [括弧を追加せずに複数のフィールドをクエリする
-
[解決済み] SQLを使用してSUMとSUBTRACTを行うには?