结论
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的修改而被更新。