歴史的に、5.6.5 より前の MySQL バージョンでは、テーブルに TIMESTAMP を 1 つだけ持つように制限する制限がありましたDEFAULT CURRENT_TIMESTAMP 句または ON UPDATE CURRENT_TIMESTAMP 句のいずれかを含む列。この制限は、2008 年に最初に導入されたときに、INT、BIGINT、SMALLINT 整数にまで拡張されました。
この制限は、CURRENT_TIMESTAMP 機能に特定の実装を必要とするレガシー実装の問題から生じました。
たとえば、次のテーブル定義を考えてみましょう。これは 2 つのテーブル定義を試みています。 CURRENT_TIMESTAMP 値を持つ TIMESTAMP 列:
CREATE TABLE `foo` ( `ProductID` INT(10) UNSIGNED NOT NULL, `AddedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdatedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=INNODB;
この定義により次のエラーが発生します:
エラー コード : 1293<br>テーブル定義が正しくありません。 <br>DEFAULT または ON<br>UPDATE 句に
このエラーは、テーブル定義が前述の制限に違反していることを示しています。
技術的な問題にもかかわらずこの制限の基礎となっているため、MySQL チームはその不便さを認識していました。その後、MySQL 5.6.5 (2012 年 4 月 10 日にリリース) で、この制限は解除されました。
このアップデートの変更ログには次のように記載されています。
Previously, at most one TIMESTAMP column per table could be automatically initialized or updated to the current date and time. This restriction has been lifted. Any TIMESTAMP column definition can have any combination of DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP clauses. In addition, these clauses now can be used with DATETIME column definitions.
以上がバージョン 5.6.5 より前の MySQL で CURRENT_TIMESTAMP を TIMESTAMP カラムとともに使用する場合の制限は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。