(这是博主第一篇真正意义上的原创,该问题来源于工作中遇到的小问题)
需求分析:
一个表中,有两个字段,createtime和updatetime。
1 当insert的时候,sql两个字段都不设置,会设置为当前的时间
2 当update的时候,sql中两个字段都不设置,updatetime会变更为当前的时间
设计数据库如下:
该数据表需要一个数据的创建时间create time,和一个数据最近更新时间last update time。
CREATE TABLE `test` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'auto increase',
`imsi` varchar(20) NOT NULL COMMENT 'imsi',
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'last_update time',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'data create time',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='test'
timestamp设置默认值是当前时间 Default CURRENT_TIMESTAMP
timestamp设置随着表变化而自动更新是ON UPDATE CURRENT_TIMESTAMP
可以设置2个timestape字段 ,把一个字段设置为默认值更新, 另一个不自动更新。
mysql5.5不能同时设置两个字段为CURRENT_TIMESTAMP,但mysql5.6是可以的,
所以以上数据库设计是能正常实现需要的update time 和create time功能的:
测试如下: