同じ行のフィールドが変更されるたびに自動的に更新されるMySQLテーブルのタイムスタンプ列を定義することは可能ですか?理想的には、この列は最初に行が挿入された時刻に設定する必要があります。
乾杯、ドン
言及されている他のポスターと同様に、タイムスタンプ列を使用できます。列を追加するために使用できる SQL は次のとおりです。
ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
これにより、現在の日付/時刻のデフォルト値を持つ「lastUpdated」という列が追加されます。そのレコードが更新されると (たとえば 5 分後)、そのタイムスタンプは現在の時刻に自動的に更新されます。
これは、タイムスタンプ列タイプのデフォルト機能です。ただし、このタイプの形式はyyyymmddhhmmss(すべての数字、コロンやその他の区切りなし)であることに注意してください。
編集:フォーマットに関する上記のコメントは、MySQL <4.1のバージョンにのみ当てはまります...それ以降のバージョンは、DateTimeのようにフォーマットします
これは私が観察したものです(MySql 5.7.11)-
テーブルの最初の TIMESTAMP 列は、現在のタイムスタンプをデフォルト値として取得します。したがって、値を指定せずに INSERT または UPDATE を実行すると、列は現在のタイムスタンプを取得します。
後続の TIMESTAMP 列には、デフォルト値を明示的に定義する必要があります。2 つの TIMESTAMP 列があり、2 番目の列にデフォルト値を指定しないと、テーブルを作成しようとしたときにこのエラーが発生します -
エラー 1067 (42000): 'COLUMN_NAME' のデフォルト値が無効です
MySQL タイムスタンプは、デフォルト値が設定されている場合にのみ、作成時間または更新時間で設定されます。ALTER TABLE some_table ADD when TIMESTAMP DEFAULT CURRENT_TIMESTAMP
.
それ以外の場合は、DateTime フィールドと同じように機能しますが、1970/01/01 UTC に相対的であるため、DateTime のように特定のタイムゾーンに依存しない絶対的な時点です。