结论

MySQL中,有某个时间字段(如update_time):
①、当该字段类型设置为timestamp时,如果其默认值赋值为CURRENT_TIMESTAMP,那么插入一条记录时,该字段的值会自动设置为系统当前时间;
②、如果设置或在navicat可视化GUI中勾选了 “ON UPDATE CURRENT_TIMESTAMP”字段属性时,则时间字段会随着update命令进行实时更新。即当数据表的其他字段发生变化时,该时间字段自动更新为最新的时间。

实验

初始化测试表person:

CREATE TABLE `person` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

通过navicat查看person表:
在这里插入图片描述
初始值为:
在这里插入图片描述
实验①、为update_time添加 ON UPDATE CURRENT_TIMESTAMP 支持

ALTER TABLE person MODIFY COLUMN `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间';

update `person` set name='ShangHai' where id=1;

在这里插入图片描述
可以看到,update_time字段均因为name的修改而被更新。

实验②、继续为create_time添加 ON UPDATE CURRENT_TIMESTAMP 支持

ALTER TABLE person MODIFY COLUMN `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间';


update `person` set name='BeiJing' where id=2;

在这里插入图片描述
可以看到,2个时间字段均因为name的修改而被更新。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐