0

私のSQLクエリは次のようになります

ALTER TABLE `exercises`
ADD COLUMN `creation_dt`  timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `lesson_id`,
ADD COLUMN `modification_dt`  timestamp NULL DEFAULT '' ON UPDATE CURRENT_TIMESTAMP AFTER `creation_dt`;

しかし、エラーメッセージが表示されます

ここに画像の説明を入力してください

この問題を解決するにはどうすればよいですか?

4

4 に答える 4

1

スクリーンショットに示されているように、これはエラーコード1293です。このエラーの理由は、MySQLの実装の詳細にあるようです。

タイプの列を使用して回避することはできますDATETIMEが、これでは現在の時刻を値として設定できませんdefaultただし、これはアプリケーションコードで、またはトリガーを使用して解決できます。サンプルテーブル(と呼ばれるdatetimetest)を使用して、次のようなトリガーを追加しました。

データベーススキーマ:

CREATE TABLE `datetimetest` (
    `id` int(11) NOT NULL,
    `created` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TRIGGER trigger_SetCreated
  BEFORE INSERT ON datetimetest
  FOR EACH ROW SET NEW.created = UTC_TIMESTAMP();

に設定される列が1つしかないためmodified、トリガーを使用してフィールドに対して同じことを行うか、ソリューションを維持することができます。BEFORE UPDATETIMESTAMPCURRENT_TIMESTAMP ON UPDATE

于 2012-07-22T14:40:18.770 に答える
1

テーブルに複数のタイムスタンプを含めることはできません。それでも、テーブルに2つの日付/日時を挿入する場合は、1つのタイムスタンプと別の日時タイプを選択してください。

于 2012-07-22T14:50:20.580 に答える
0

CURRENT_TIMESTAMP1つのテーブルに複数の列を含めることはできません。本当に必要な場合は、「挿入前」トリガーを使用してそれらをエミュレートできます。

于 2012-07-22T14:21:40.537 に答える
-1

datetimeタイムスタンプはあなたが思っているものではありません:-)代わりに列が必要だと思います。

于 2012-07-22T14:21:11.583 に答える