同じ行のフィールドが変更されるたびに自動的に更新されるMySQLテーブルにタイムスタンプ列を定義することは可能ですか?理想的には、この列は最初に行が挿入された時刻に設定する必要があります。
乾杯、ドン
これは、timestamp列タイプのデフォルトの機能です。ただし、このタイプの形式はyyyymmddhhmmss(すべて数字、コロンまたはその他の区切り文字)であることに注意してください。
EDIT:形式に関する上記のコメントは、MySQL <4.1のバージョンにのみ当てはまります...以降のバージョンでは、DateTime
タイムスタンプ列は、他の投稿者と同じように使用できます。以下は、列を追加するために使用できるSQLです。
ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
これにより、現在の日付/時刻のデフォルト値を持つ「lastUpdated」という列が追加されます。そのレコードが更新されると(5分後に言います)、そのタイムスタンプは自動的に現在の時刻に更新されます。
これは私が観察したものです(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のように特定のタイムゾーンに依存しない絶対的な時点です。