MySQL の複数の CURRENT_TIMESTAMP カラムの制限を克服する
多くの場合、データベース テーブル内のデータの作成タイムスタンプと更新タイムスタンプの両方を追跡することが望ましい。 MySQL では、CURRENT_TIMESTAMP キーワードを使用して、タイムスタンプ列に現在の日付と時刻を自動的に設定できます。ただし、MySQL には、テーブルの CREATE ステートメントで指定できる CURRENT_TIMESTAMP カラムは 1 つだけであるという制限があります。
エラーへの対処
テーブルを作成しようとしたときに生成されるエラー複数の CURRENT_TIMESTAMP カラムがある場合は次のとおりです:
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
このエラーは、複数の CURRENT_TIMESTAMP カラムの制限に違反しているため、MySQL がテーブル定義を処理できないことを示します。
解決策
この制限を克服するには、新しいバージョンの MySQL (5.6.25 以降) を使用できます。 MySQL 5.6.25 以降では、複数の CURRENT_TIMESTAMP カラムに対する制限が削除されました。これにより、現在の日付と時刻で自動的に更新される複数の TIMESTAMP カラムを含むテーブルを定義できます。
たとえば、次のテーブル定義は MySQL 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 );
このテーブル定義では、ts_create 列と ts_update 列は両方とも TIMESTAMP 列であり、それぞれ挿入操作と更新操作のデフォルト値として CURRENT_TIMESTAMP が設定されています。これにより、レコードが作成または更新されるときに、タイムスタンプが現在の日付と時刻で自動的に更新されます。
以上がMySQL テーブルには複数の CURRENT_TIMESTAMP カラムを持つことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。