web-dev-qa-db-ja.com

MySQL:タイムスタンプを更新せずにエントリを更新する

Mysqlテーブルに「ON UPDATE CURRENT_TIMESTAMP」属性を持つタイムスタンプがあります。特別な機会にタイムスタンプの更新を手動で無効にする方法はありますか? (例:エントリを更新してブログ投稿を修正しますが、更新はしません)

67
user114060

特別な機会にタイムスタンプの更新を手動で無効にする方法はありますか? (例:エントリを更新してブログ投稿を修正しますが、更新はしません)

挿入時にのみ列に入力するようにデフォルトの制約を構成する必要があるように聞こえます:

DEFAULT CURRENT_TIMESTAMP

これだけに変更すると、リビジョンによってタイムスタンプ値が更新されなくなります。 IE:昨日ブログ投稿を作成し、今日のタイプミスを修正した場合-列の日付は昨日のままです。

45
OMG Ponies

Updateコマンドで、列の値を現在の値に手動で設定できます。

UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;

クエリで値を設定しない場合、テーブル定義に従って現在のタイムスタンプに更新されます。

126
Andy

テーブル/タイムスタンプを自動更新するには:

ALTER TABLE myTable
CHANGE myTimestampColumn
        myTimestampColumn TIMESTAMP NOT NULL
                       DEFAULT CURRENT_TIMESTAMP 
                       ON UPDATE CURRENT_TIMESTAMP;

作成するにはnot自動更新:

ALTER TABLE myTable
CHANGE myTimestampColumn
        myTimestampColumn TIMESTAMP NOT NULL
                       DEFAULT CURRENT_TIMESTAMP;

注:「デフォルトのcurrent_timestamp」部分は、フィールドがヌルではないため、デフォルト時に現在のスタンプに設定するだけです。必要に応じて、not nullとデフォルトの両方を削除できます。

20
Olie

タイムスタンプを使用しないで、時間を手動で追跡します。

本当にレコードを更新したいが、タイムスタンプを更新しない場合:

UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
9
knittl

更新時にtimestempを変更する場合、値が更新されたが変更されなかった場合(保存値を更新した場合)、「on update Current_timestemp」は更新されないため、timestempを設定する必要があることを考慮する必要があります手動で

SET LastUpdatedDate=NOW() WHERE

ここからアイデアが生まれました: MYSQLレコードをタッチしてTIMESTAMPフィールドを更新

1
Pini Cheyni