ホームページ >データベース >mysql チュートリアル >バージョン 5.6.5 より前の MySQL で CURRENT_TIMESTAMP を TIMESTAMP カラムとともに使用する場合の制限は何ですか?

バージョン 5.6.5 より前の MySQL で CURRENT_TIMESTAMP を TIMESTAMP カラムとともに使用する場合の制限は何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-15 16:20:13856ブラウズ

What Were the Restrictions on Using CURRENT_TIMESTAMP with TIMESTAMP Columns in MySQL Before Version 5.6.5?

5.6.5 より前の MySQL バージョンでの DEFAULT 句または ON UPDATE 句に CURRENT_TIMESTAMP がある TIMESTAMP カラムの制限

歴史的に、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 句

CURRENT_TIMESTAMP を持つ TIMESTAMP カラムは 1 つだけ存在できます

このエラーは、テーブル定義が前述の制限に違反していることを示しています。

制限の解除

技術的な問題にもかかわらずこの制限の基礎となっているため、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。