1. ホーム
  2. mysql

[解決済み] DEFAULT句でCURRENT_TIMESTAMPを持つTIMESTAMPカラムは1つしかないのはなぜですか?

2022-04-17 23:47:23

質問

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

テーブルの定義が正しくありません。 を持つTIMESTAMP列は1つだけです。 DEFAULT または ON で CURRENT_TIMESTAMP を指定します。 UPDATE句

解決方法は?

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

<ブロッククオート

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

以前は、1つのテーブルにつき最大1つのTIMESTAMPカラムを は、自動的に現在の日付と時刻に初期化または更新されます。 この制限は解除されました。どのTIMESTAMPカラム定義でも DEFAULT CURRENT_TIMESTAMP と ON UPDATE の任意の組み合わせが可能です。 CURRENT_TIMESTAMP 節があります。さらに、これらの節は、現在、使用することができます。 DATETIME カラムの定義と一緒に使用します。詳細については、「自動 TIMESTAMPとDATETIMEの初期化および更新。

http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html