DEFAULT 句に CURRENT_TIMESTAMP を持つ TIMESTAMP 列が 1 つしか存在しないのはなぜですか? 質問する

DEFAULT 句に CURRENT_TIMESTAMP を持つ TIMESTAMP 列が 1 つしか存在しないのはなぜですか? 質問する

DEFAULT または ON UPDATE 句に CURRENT_TIMESTAMP を持つ TIMESTAMP 列が 1 つしか存在できないのはなぜですか?

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

テーブル定義が正しくありません。DEFAULT または ON UPDATE 句で CURRENT_TIMESTAMP を持つ TIMESTAMP 列は 1 つしか存在できません。

ベストアンサー1

この制限は、歴史的なコード レガシーの理由のみによるもので、MySQL の最近のバージョンでは解除されています。

MySQL 5.6.5 の変更点 (2012-04-10、マイルストーン 8)

以前は、テーブルごとに最大 1 つの TIMESTAMP 列を自動的に初期化または現在の日付と時刻に更新することができました。この制限は解除されました。すべての TIMESTAMP 列定義には、DEFAULT CURRENT_TIMESTAMP 句と ON UPDATE CURRENT_TIMESTAMP 句を任意に組み合わせることができます。さらに、これらの句は DATETIME 列定義でも使用できるようになりました。詳細については、「TIMESTAMP および DATETIME の自動初期化と更新」を参照してください。

5.6 リリースノート

おすすめ記事