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

您不能在表中拥有多个时间戳,但如果您想在表中插入两个日期/日期时间,请选择一个时间戳和另一种日期时间类型。

于 2012-07-22T14:50:20.580 回答
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();

您可以modified使用触发器对字段执行相同操作,BEFORE UPDATE或者保留您的解决方案,因为您现在只有一TIMESTAMP列设置为CURRENT_TIMESTAMP ON UPDATE.

于 2012-07-22T14:40:18.770 回答
0

一个表中不能有多个列CURRENT_TIMESTAMP。如果你真的需要,你可以使用“插入前”触发器来模拟它们。

于 2012-07-22T14:21:40.537 回答
-1

时间戳不是您认为的那样:-) 我认为您需要datetime列。

于 2012-07-22T14:21:11.583 回答