无法在1个MySQL表中创建2个时间戳列

无法在1个MySQL表中创建2个时间戳列,mysql,sql,time,Mysql,Sql,Time,我的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`; 但是获取错误消息 如何解决此问题?

我的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`;
但是获取错误消息


如何解决此问题?

时间戳不是您想象的那样:-)我想您想要的是
datetime
列。

一个表中不能有多个带有
当前时间戳的列。如果确实需要,可以使用“插入前”触发器来模拟它们。

如屏幕截图所示,这是错误代码

您可以通过使用类型为
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
字段执行相同的操作,或者保留您的解决方案,因为您现在只有一个
TIMESTAMP
列,该列在更新时设置为
CURRENT\u TIMESTAMP

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

请参见。您解决了这个问题吗?触发器应该有帮助。