作成および更新時の MySQL CURRENT_TIMESTAMP
MySQL テーブルを定義する場合、レコードの作成と変更を追跡するためにタイムスタンプを含めることが望ましい。ただし、CURRENT_TIMESTAMP をデフォルトとして使用するか、値を更新して 2 つの TIMESTAMP フィールドを定義しようとすると、エラーが発生することがあります。
エラー メッセージ
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
原因
MySQL バージョン 5.6.25 より前のバージョンでは、CURRENT_TIMESTAMP をデフォルトまたは更新値として定義できる TIMESTAMP カラムは 1 つだけでした。
解決策
MySQL バージョン 5.6.25 以降では、それぞれに独自の CURRENT_TIMESTAMP 設定を持つ複数の TIMESTAMP カラムを定義できます。 MySQL 8.0 では、この制限は完全に削除されました。したがって、バージョン 5.6.25 以降では、次のテーブル定義が正しく機能するはずです。
CREATE TABLE `msgs` ( `id` INT PRIMARY KEY AUTO_INCREMENT, `msg` VARCHAR(256), `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `ts_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP )
この定義は、2 つの TIMESTAMP フィールド、ts_create と ts_update を持つテーブルを作成します。これらのテーブルは、現在のタイムスタンプで自動的に更新されます。レコードの作成時と更新時のタイムスタンプ。
以上がMySQL では複数の TIMESTAMP カラムに CURRENT_TIMESTAMP を設定できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。