无法在1个MySQL表中创建2个时间戳列
我的sql查询如下所示无法在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`; 但是获取错误消息 如何解决此问题?
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
,表中不能有多个时间戳,如果您想在表中插入两个日期/日期时间,请选择一个时间戳和另一个日期时间类型。请参见。您解决了这个问题吗?触发器应该有帮助。