Mysqlテーブルに「ON UPDATE CURRENT_TIMESTAMP」属性を持つタイムスタンプがあります。特別な機会にタイムスタンプの更新を手動で無効にする方法はありますか? (例:エントリを更新してブログ投稿を修正しますが、更新はしません)
特別な機会にタイムスタンプの更新を手動で無効にする方法はありますか? (例:エントリを更新してブログ投稿を修正しますが、更新はしません)
挿入時にのみ列に入力するようにデフォルトの制約を構成する必要があるように聞こえます:
DEFAULT CURRENT_TIMESTAMP
これだけに変更すると、リビジョンによってタイムスタンプ値が更新されなくなります。 IE:昨日ブログ投稿を作成し、今日のタイプミスを修正した場合-列の日付は昨日のままです。
Updateコマンドで、列の値を現在の値に手動で設定できます。
UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;
クエリで値を設定しない場合、テーブル定義に従って現在のタイムスタンプに更新されます。
テーブル/タイムスタンプを自動更新するには:
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とデフォルトの両方を削除できます。
タイムスタンプを使用しないで、時間を手動で追跡します。
本当にレコードを更新したいが、タイムスタンプを更新しない場合:
UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
更新時にtimestempを変更する場合、値が更新されたが変更されなかった場合(保存値を更新した場合)、「on update Current_timestemp」は更新されないため、timestempを設定する必要があることを考慮する必要があります手動で
SET LastUpdatedDate=NOW() WHERE
ここからアイデアが生まれました: MYSQLレコードをタッチしてTIMESTAMPフィールドを更新