首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql列用于插入,不同列用于更新

问mysql列用于插入,不同列用于更新
EN

Stack Overflow用户
提问于 2012-11-22 18:42:35
回答 3查看 111关注 0票数 0

我正在尝试创建一个包含两个时间戳列的表,一个用于创建行,另一个用于更新行。到目前为止,我尝试过的是:

代码语言:javascript
复制
CREATE TABLE `tmp` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `data` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
   `created` timestamp NOT NULL ,
   `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

但我发现了一个错误:

表定义错误;默认情况下或在UPDATE子句中只能有一个带有CURRENT_TIMESTAMP的时间戳列

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-22 19:06:19

您可以在MySQL 5.6中这样做(在编写释放候选时可用,但尚未准备好生产)。

从MySQL 5.6.5开始,时间戳和日期时间列可以自动初始化并更新到当前日期和时间(即当前时间戳)。在5.6.5之前,这只适用于时间戳,而每个表最多只有一个时间戳列.对于表中的任何时间戳或日期时间列,可以将当前时间戳赋值为默认值、自动更新值或两者兼而有之。

票数 1
EN

Stack Overflow用户

发布于 2012-11-22 18:43:54

这是一个MYSQL约束,您只能有一个列,其默认值是systime。

这个问题也可以称为如何在现有表列中添加"ON当前时间戳“。

票数 1
EN

Stack Overflow用户

发布于 2012-11-22 18:57:42

您可以编写一个触发器,将created时间戳分别添加到插入上。

代码语言:javascript
复制
delimiter |
CREATE TRIGGER add_created_ts BEFORE INSERT on `tmp`
FOR EACH ROW
BEGIN
   SET NEW.created = current_timestamp;
END
|
delimiter ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13518484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档